gpt4 book ai didi

ios - 使用新的核心数据初始化 RestKit 的 RKPaginator

转载 作者:行者123 更新时间:2023-11-28 22:19:59 25 4
gpt4 key购买 nike

我有一个 RKPaginator 从服务器加载数据并将其保存到 Core Data。在加载和分页时,这一切都像一个魅力。然而,Core Data 中的项目是持久的,所以任何时候我重新进入 viewcontroller 或重新启动应用程序,所有以前分页的数据仍然在 Core Data 中。

我想在启动应用程序时从一张白纸开始。我怎样才能告诉 Core Data 刷新它的内容?我尝试了以下代码,但它似乎有时只工作,而且不规律,可能是来自传入数据的计时错误。实际上,只有当我从我的 Api-Request 获得成功回复时,我真的很想刷新。

NSString *entityDescription = @"Activity";
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:entityDescription inManagedObjectContext:weakSelf.managedObjectContext];
[fetchRequest setEntity:entity];

NSError *error;
NSArray *items = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];

for (NSManagedObject *managedObject in items) {
[self.managedObjectContext deleteObject:managedObject];
}

我将如何实现这一点?

最佳答案

最简单的选择是在应用程序启动时从磁盘中删除核心数据存储文件并创建一个新文件。这显然不适用于在请求返回良好数据之前保留数据。

为此,您需要能够分辨什么是旧的,什么是新的。 RestKit 可以为您做到这一点,但如果您正在加载分页数据,它将无法正常工作(当您获得新页面时,它往往会删除您拥有的页面)。

您可以使用与您拥有的代码类似的代码(应该可以工作),但是在请求的 success block 中。在 success block 中,您拥有所有新项目,因此您只需检查它是否是第一个请求(BOOL 实例变量),如果是,则删除所有内容那不在 mappingResult 中。

关于ios - 使用新的核心数据初始化 RestKit 的 RKPaginator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20703537/

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