gpt4 book ai didi

ios - 更新 Parse iOS 本地数据存储

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:16:04 24 4
gpt4 key购买 nike

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

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

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

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

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

我也意识到我正在做相当多的分类工作。这会影响表格加载的漫长等待时间吗?

最佳答案

看来您正在寻找缓存策略 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"];
}];
}];

关于ios - 更新 Parse iOS 本地数据存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28867523/

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