【发布时间】:2015-03-14 19:10:56
【问题描述】:
我正在尝试将本地数据存储与 iOS 一起使用。
假设我有两个或更多设备。
我使用 saveEventually 将数据保存在本地(和云端)。仅在一台设备上工作时,它可以正常工作。
当我开始使用多个设备进行同步时,我会使用:
PFQuery *query = [UserPreference query];
[query whereKey:@"userId" equalTo: [PFUser currentUser].objectId];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error){
if(!error){
[UserPreference pinAllInBackground:objects block:^(BOOL succeeded, NSError *error) {<---- objects here are fine
if(succeeded){
[query fromLocalDatastore];
NSLog(@"Local %@", [(UserPreference*)[[query findObjects] objectAtIndex:0] filterContext ]); <--- however here the old value is retrieved
}
}];
}
}];
所以我从云中获取了适当的对象,然后我 PinAll 但是当我从 localDataStore 检索时检索旧值?
谁能解释一下: 1.如果这完全可行,即使用本地数据存储在两个设备之间同步 2. 我做错了什么?
PS:我注意到对象中的 serverData 包含正确的信息,但没有更新对象
【问题讨论】:
-
我对 Parse 不是很熟悉,但我认为您应该在最后一个查询中使用
[[query fromLocalDatastore] findObjects]或[[query fromPin] findObjects]之类的东西 -
嗨@danypata。感谢您的回答。我认为问题在于 pinAll 或 pin 无法正常工作,或者我没有正确使用它。就我而言,它根本不更新对象。这让我感到困惑,因为文档说:“启用本地数据存储后,您可以通过固定它来存储对象”和“每当您保存对对象的更改或从 Parse 获取新更改时,数据存储中的副本将自动更新,因此您不必担心。”
标签: ios parse-platform local-datastore