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