Listen to custom object - QuickBlox - ios

I've managed to add/edit/delete/update custom objects in the QuickBlox back-end.
However, I want the user to "listen" to a certain object, and if the value has changed I want to let the user know.
Is that possible?
Thank you!

There is only one way to "listen" for any changes on custom objects: there is property updatedAt, but you need to load custom object from server (by QBRequest) in order to get this field up to date from server.

Related

What is the best way to save data online from UITableView?

My application
UITableView has 200 rows
In edit mode each cell has two actions for eg: passAction and failAction
After editing i want to update the database with either 0 or 1 based on its selection
I am retrieving data from server as json and storing it as object
Which is Best?
a. Requesting the server on each time the action is called.
b. Storing it in the local database and sync on completing all rows.
c. Request the server once on completion and send the whole object as JSON.
Help me in choosing the best option of implementation I can do!
Correct me if I bypassed any rules of SO because this is my first question!
#Dan Beaulieu: No need to send all data to server after edit. First update your database and Just send data which was changed in your database.
So add one field like "sync" in your database table and updated field set sync = 1 during edit and get data from database which was set sync = 1 and send it to server.

QuickBlox update custom object without using ID

I use QuickBlox for my chat app.
When updating/deleting a custom object, is it possible not to use object.ID?
For example, I use a custom field "requestor_id" and "responder_id" to identify FriendRequest Custom Object. I need to update the status of a friend request to from "pending" to "approved".
I don't want to fetch the ID first in order to update it.
Is it possible to send along a dictionary like #{"responder_id": 123, #"requestor_id":234}?
I think it's not possible. Deleting or updating take place only with object's ID.. so you need perform at last 2 actions:
fetch items
updating/deleting

Sending NSNotifications to all objects of a class

I have an object that can be selected by a user click. With the current requirements of the app, at any time, there is no more than one of these items selected at any point during app execution.
I implemented a mechanism to enforce this, as follows:
Each of these objects has a unique identifier as a property.
When each object is created, it subscribes to the NSNotificationCenter listening for the MY_OBJECT_SELECTED notification.
When each object is selected, it posts the MY_OBJECT_SELECTED notification, with its unique Id as part of the userInfo dictionary.
Then, when each object receives the notification, it checks to see if its id is the same as the one in the userInfo. If it is, it does nothing, but if it isn't, it sets itself to unselected.
Is this a decent approach to the problem? If not, how would you do it?
It is a decent way of doing it, although it is not very efficient. The more objects you have, the more time you spend comparing IDs. The easiest way is to store your object pointers and IDs in a map table (or similar) and remember the last selected object. Whenever you select a new object, you clear the selection flag of the last selected object, then look up the new object and set its selection flag. It requires you to keep a collection of your objects, though.
The time required to update selections with this approach is independent of the number of objects you have.
If the object is spread all over the app,i.e. if it is a member in various classes. You can have a global object of same type and assign it to only that object which has been touched. In steps it will be like:
Have a global variable of object type.
At any object touch assign globalObject = currentObject;
do all operations on globalObject throughout app like calling methods and modifying object members(have a check for nil to ensure safety).
Reassign to different object with new touch.

Adding a `lastModified` record to a Core Data managed object

An object needs to be submitted to the server, and I want to indicate to the user that the object needs to be submitted by displaying the lastModified date/time, and lastSubmitted date/time.
(Yes, the record must be manually submitted.)
I'm currently listening for NSManagedObjectContextObjectsDidChangeNotification, checking if the object's entity is RetailLocation, and if so, setting its lastModified date/time (of course, only if lastModified is not the only property being modified). Since this seems to highly confuse the undo manager, I use performSelector:SOMESEL withObject:retailLocation afterDelay:0.0 to set the lastModified property.
Sadly, this is almost even worse: this results in two actions being added to the undo stack!
Can someone recommend a nice way to implement a lastModified attribute in a Core Data-managed record? Alternatively, what am I missing?
If you don't want the modification date to be undoable, you can call disableUndoRegistration on your NSUndoManager before making changes, and enableUndoRegistration when you're done.
If you need one, you can get a pointer to the NSUndoManager by calling undoManager on your NSManagedObjectContext, but if you're working in iOS you should have one already.
Also, note Apple recommends using the NSManagedObjectContextWillSaveNotification notification for this, since changes might not necessarily be saved.

CallLogs in Blackberry

i am working on CallLogs Sync Application in Blackberry and partially i have done it, one point that i didn't understand is how to add information to CallLogs. I have retrieved information from CallLogs and Store on Server but now i retrieved information from Server but how to add info to CallLogs didn't come in my mind as i retrieved all the information in Strings from Server and PhoneCallLog Constructor look like this:
PhoneCallLog call = new PhoneCallLog(Date,int Type,int Duration,int Status,participantID participant,String Notes);
Please tell me as soon as Possible, i will be very thankful to you.
class net.rim.blackberry.api.phone.phonelogs.PhoneLogs has method addCall(CallLog call) that adds a log item.
create PhoneCallLog instance with the constructor you posted and add it to PhoneLogs. You need to have the app signed to use these methods. (see http://www.blackberry.com/go/codesigning )
API documentation:
http://docs.blackberry.com/en/developers/deliverables/6022/net/rim/blackberry/api/phone/phonelogs/PhoneLogs.html
http://docs.blackberry.com/en/developers/deliverables/6022/net/rim/blackberry/api/phone/phonelogs/PhoneCallLog.html

Resources