Examples in Swift :
First of all, look at isDataAvailable and isDirty .
var user = PFUser.currentUser()! // Gets whether the PFObject has been fetched. // isDataAvailable: true if the PFObject is new or has been fetched or refreshed, otherwise false. user.isDataAvailable() // Gets whether any key-value pair in this object (or its children) has been added/updated/removed and not saved yet. // Returns whether this object has been altered and not saved yet. user.isDirty()
It is also probably better / more efficient to use fetchIfNeeded , fetchIfNeededInBackground or fetchIfNeededInBackgroundWithBlock: "since they will use the local cache if they are available."
// Synchronously fetches the PFObject data from the server if isDataAvailable is false. user.fetchIfNeeded() // Fetches the PFObject data asynchronously if isDataAvailable is false, then sets it as a result for the task. user.fetchIfNeededInBackground() // Fetches the PFObject data asynchronously if isDataAvailable is false, then calls the callback block. user.fetchIfNeededInBackgroundWithBlock({ (object: PFObject?, error: NSError?) -> Void in // Code here })
Otherwise, you can also use fetch , fetchInBackground , fetchInBackgroundWithBlock if you do not need to use a local cache.
// Synchronously fetches the PFObject with the current data from the server. user.fetch() // Fetches the PFObject asynchronously and sets it as a result for the task. user.fetchInBackground() // Fetches the PFObject asynchronously and executes the given callback block. user.fetchInBackgroundWithBlock({ (object: PFObject?, error: NSError?) -> Void in // Code here })
source share