【发布时间】:2013-12-20 12:21:30
【问题描述】:
我有一个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];
}
我将如何实现这一目标?
【问题讨论】:
-
你在那个代码之后保存了吗?您的实体是否有日期(例如下载日期)?
-
不,我没有保存。我会这样做的,谢谢。我在实体中也没有下载日期。这不是服务器提供给我的东西。从服务器获取数据后是否需要设置?
-
如果您想在收到回复后进行清除,您需要通过某种方式来区分什么是新的,什么是旧的......
-
我可以记下进入 ViewContoller 的时间,任何旧的都被删除,而加载的任何东西都会获得一个新的当前时间戳。
-
你可以,但你必须重新处理所有映射的项目,然后重新保存数据库。不是问题,而是麻烦。
标签: ios core-data restkit restkit-0.20