gpt4 book ai didi

ios - Parse.com PFQueryTableViewController 本地数据存储

转载 作者:IT王子 更新时间:2023-10-29 05:53:48 24 4
gpt4 key购买 nike

我有一个 Swift 应用程序,其中有一个 PFQueryTableViewController,我想将本地数据存储与 Parse 一起使用。但是,我对将本地数据存储与实时查询一起使用感到困惑。

这是我想做的:

  1. 当显示 PFQueryTableViewController 时,我希望它始终从本地数据存储中获取数据
  2. 但是,在无延迟地呈现 View 之后(因为本地数据存储为数据源提供动力),我想进行异步调用以使用来自云的最新数据更新本地数据存储。此时,如果有新数据,我希望最新的数据能够无缝地出现在表格中,最好是带有行动画。

我如何实现这一目标?

最佳答案

以下是我的管理方式 - 也许它会让您走上正轨。如果您已经解决了问题,我很想看看您的解决方案。

首先,我创建了一个方便的方法来创建我的基本查询:

- (PFQuery *)baseQuery
{
PFQuery *query = [PFQuery queryWithClassName:@"MyClass"];
[query orderByDescending:@"myParameter"];
return query;
}

我们希望 queryForTable 始终访问本地数据存储。

- (PFQuery *)queryForTable
{
return [[self baseQuery] fromLocalDatastore];
}

所以现在剩下要做的就是从网络填充本地数据存储:

- (void)refreshObjects
{
[[[self baseQuery] findObjectsInBackground] continueWithBlock:^id(BFTask *task) {
if (task.error) {
[self.refreshControl endRefreshing];
return nil;
}
return [[PFObject unpinAllObjectsInBackgroundWithName:@"cacheLabel"] continueWithSuccessBlock:^id(BFTask *unused) {
NSArray *objects = task.result;
return [[PFObject pinAllInBackground:objects withName:@"cacheLabel"] continueWithSuccessBlock:^id(BFTask *unused) {
[self.refreshControl endRefreshing];
[self loadObjects];
return nil;
}];
}];
}];
}

我们可以随时调用它:在 viewDidLoadviewDidAppear 中,响应拉动刷新事件(这就是为什么我有 UIRefreshControl 代码)或其他任何合适的地方。

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

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