By object.saveEventually(), I will be able to sync my data in local storage with the cloud in Parse.
But here is what I am confused about, in the doc, it declares:
When an object is pinned, every time you update it by fetching or saving new data, the copy in the local datastore will be updated automatically
But then, next example, few paragraphs away, unpins all objects then updates HighScores by pinning the new scores array with name HighScores
PFQuery *query = [PFQuery queryWithClassName:@"GameScore"];
[query orderByDescending:@"score"];
// Query for new results from the network
[[query findObjectsInBackground] continueWithSuccessBlock:^id(BFTask *task) {
return [[PFObject unpinAllObjectsInBackgroundWithName:@"HighScores"] continueWithSuccessBlock:^id(BFTask *ignored) {
// Cache the new results.
NSArray *scores = task.result;
return [PFObject pinAllInBackground:scores withName:@"HighScores"];
}];
}];
Therefore, should I unpin all objects of HighScores in order to update existing scores in HighScores?
Will findObjectsInBackground automatically update any found object which is pinned? I am quite confused.
Thank you!
I found out that both findObjectsInBackground and fetchAllInBackground will update any pinned object matching the objectId.
That is to say, when you create an object initially, it will not have an objectId, but you can still pin this object without successfully saving it. However, you can't find or fetch them until you successfully save it to the cloud. So in the code, you have to cherrypick these particular PFObjects out and update them some other ways or don't update them at all.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With