Tro*_*sen 7 cocoa ios parse-platform pfquery
使用'enableLocalDataStore'时,我无法将本地数据与Parse数据同步.如果我不使用本地存储一切都很好,但我想尽量减少对Parse服务器的调用.据我所知,如果我对新创建的对象使用'saveaveEventually',它们将在本地持续(固定)并在互联网连接可用时与Parse同步.这也很好.我的问题是我不知道使用Parse'dataStore'更新本地'dataStore'的最佳方法,除了调用一个远程获取更改并在本地更新的方法.目前,使用以下内容:
-(void) fetchAllFavorites{
PFQuery *query = [PFQuery queryWithClassName:@"UserStats"];
[query fromLocalDatastore];
[[query findObjectsInBackground] continueWithBlock:^id(BFTask *task) {
if (task.error) {
}
else
{
[PFObject pinAll:task.result];
}
return task.result;
}];
}
Run Code Online (Sandbox Code Playgroud)
此方法不考虑Parse'dataStore'中可能发生的更改.我可以通过直接调用方法来取消固定所有本地对象并获取Parse中的任何内容.但是,我认为有一种更好的方法可以将局部变化与Parse"dataStore"中的变化无缝地同步?难道这不是允许首先使用'localDataStore'的想法吗?目前,我只能看到这种方式有一种方式:您在本地存储数据,然后手动更新Parse'dataStore',但您并不真正在这些之间同步.至少这是我从一些例子中得到的想法我想知道是否有人有一个很好的方法如何:如何启用与Parse'dataStore'持续同步的'localDataStore'?任何建议和例子都会非常有帮助.我在Cocoa编程,但Java示例也很棒.谢谢,T.
我的解决方案是进行本地查询,如果没有任何内容,则查询服务器。在我的设置页面中,我有一个功能可以与服务器“同步”,基本上完全刷新固定的对象。这并不是必需的,因为每当用户编辑、删除或添加对象时,我都会根据需要调用saveEventually
, deleteEventually
, pinInBackground
, , 。unpinInBackground
我的启动功能如下所示。如果未找到本地对象,则会查询服务器并固定它们,以便下次它只能是本地对象。
PFQuery *localQuery = [PFQuery queryWithClassName:@"ClassName"];
[localQuery fromLocalDatastore]; // and any other constraints
[localQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if(objects.count > 0) {
self.objects = objects;
} else {
PFQuery *remoteQuery = [PFQuery queryWithClassName:@"ClassName"];
[remoteQuery findObjectsInBackground:^(NSArray *objects, NSError *error) {
if (objects) {
self.objects = objects;
[PFObject pinAllInBackground:objects];
}
}];
}
}];
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1709 次 |
最近记录: |