gpt4 book ai didi

ios - 在 Parse 和 localDataStore 之间同步

转载 作者:可可西里 更新时间:2023-11-01 03:33:42 25 4
gpt4 key购买 nike

使用“enableLocalDataStore”时,我无法将本地数据与 Parse 数据同步。如果我不使用本地存储一切都很好,但我想尽量减少对 Parse 服务器的调用。我知道如果我对新创建的对象使用“saveEventually”,这些对象将在本地保留(固定)并在互联网连接可用时与 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;
}];
}

此方法不考虑 Parse“dataStore”中可能发生的更改。我可以取消固定所有本地对象并通过直接调用方法来获取 Parse 中的任何内容。但是,我认为会有更好的方法将本地更改与 Parse 'dataStore' 中的更改无缝同步吗?这不是首先允许使用“localDataStore”的想法吗?目前,我只能看到它以一种方式工作:您在本地存储数据,然后手动更新 Parse“dataStore”,但您并没有真正在它们之间进行同步。至少这是我从一些人那里得到的想法 of the examples我想知道是否有人有好的方法来解决如何:如何启用与 Parse 'dataStore' 持续同步的 'localDataStore'?任何建议和示例都会非常有帮助。我在 Cocoa 中编程,但 Java 示例也很棒。谢谢,T。

最佳答案

我的解决方案是进行本地查询,如果没有,则查询服务器。在我的设置页面中,我有一个与服务器“同步”的功能,基本上完全刷新固定对象。这不是必需的,因为每当用户编辑、删除或添加对象时,我都会调用 saveEventuallydeleteEventuallypinInBackgroundunpinInBackground,视情况而定。我的启动函数看起来像这样。如果未找到本地对象,则会查询服务器并将它们固定,以便下次它只会是本地对象。

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];
}
}];
}
}];

关于ios - 在 Parse 和 localDataStore 之间同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28079207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com