【问题标题】:Updating Parse iOS Local Datastore更新 Parse iOS 本地数据存储
【发布时间】:2015-05-06 05:06:15
【问题描述】:

我正在为 iPhone 创建一个游戏,主屏幕是当前用户正在进行的游戏列表。我想使用解析本地数据存储,因为当有很多游戏正在进行时,我的查询需要很长时间。我有一个关于数据存储的问题,文档中似乎没有明确回答。

当应用程序打开时,我会在后台查询我的游戏表,根据状态(轮到你、他们轮到、结束)对它们进行排序,并将它们显示在一个表中。为了加快这个过程,我想将所有这些对象固定到本地数据存储中。

当用户刷新 tableview 以查看是否有任何游戏状态发生变化时,我想查询数据存储区以检索所有相关对象,然后也查询网络以了解任何 变化 在对象中,对于任何新对象。但是,似乎无论如何都没有使本地数据存储“最新”。我见过的唯一方法是完全查询网络,取消固定当前存储的对象,并固定新检索到的对象。如果是这种情况,我看不到使用本地数据存储的意义,因为我的查询会同样慢。

基本上,每次用户拉动刷新表时,我都希望查询数据存储,然后通过网络检查任何新对象或更改的列。

那么,有没有办法查询本地数据存储并随后更新这些对象和/或从网络添加新对象?

我也意识到我正在做很多排序。这是否会影响表加载的漫长等待时间?

【问题讨论】:

  • 仅供参考 - 截至昨天(2015 年 3 月 4 日),适用于 iOS 的 ParseSDK 有更新 (v1.6.4),它专门解决了本地数据存储的问题。 Parse 在每个版本中处理本地数据存储的方式都有更新,因此请确保下载最新版本(如果尚未下载)。

标签: ios parse-platform local datastore pfquery


【解决方案1】:

您似乎正在寻找缓存策略kPFCachePolicyCacheThenNetwork,它首先查看缓存以填充表,然后对网络进行查询,然后再次刷新表。

请注意,cachePolicy 只能在没有本地数据存储的情况下使用。如果您想使用本地数据存储,您可以通过链接查询来实现相同的功能。

PFQuery *queryLocal = [PFQuery queryWithClassName:@"SomeClass"];
[queryLocal fromPinWithName:@"SomeLabel"];
[[[queryLocal findObjectsInBackground] continueWithSuccessBlock:^id(BFTask *task) {
    NSArray *localObjects = task.result;
    // Fill the table here with localObjects

    // Then make an online query
    PFQuery *query = [PFQuery queryWithClassName:@"SomeClass"];
    return [query findObjectsInBackground];

}] continueWithSuccessBlock:^id(BFTask *task) {
    NSArray *objects = task.result;
    // Fill the table here with online objects
    // You should ensure that the most recent data is online

    return [[PFObject unpinAllObjectsInBackgroundWithName:@"SomeLabel"] continueWithSuccessBlock:^id(BFTask *ignored) {
        // Cache the new results.
        return [PFObject pinAllInBackground:objects withName:@"SomeLabel"];
    }];
}];

【讨论】:

  • 这在 UI 和冻结屏幕方面不会是一个很好的用户体验,因为我会先填满表格,再次查询,然后可能会更改表格中的所有内容,对吗?
  • 如何提供良好的用户体验取决于您。您可以每隔几分钟进行一次后台更新,这样在线查询就不会产生大的变化。或者您可以将本地查询结果与在线查询结果进行比较,以减少更改。
猜你喜欢
  • 2015-02-16
  • 1970-01-01
  • 1970-01-01
  • 2015-07-20
  • 1970-01-01
  • 2015-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多