【发布时间】:2014-05-03 06:56:09
【问题描述】:
iCloud 和 Core Data 运行良好。 除了...
在初始应用启动时(现有的 iCloud 数据存在),NSFetchedResultsController 不会随着接收到的数据而更新。 NSFetchedResultsController 委托只是不被调用。在强制退出并重新启动应用程序时,所有数据都应该存在。
核心数据代码同优秀教程here。我觉得这段代码没有错,因为我已经将它用于另一个应用程序,并且没有这个问题。
其他信息:我的托管对象上下文是用主队列并发初始化的。我设法弄清楚的唯一一件事是,我可以在初始数据通过时捕获它 - 下面的函数在应用程序最初启动几秒钟后被调用。然而,尽管数据通过了,现有的获取结果控制器似乎并没有相应地更新(但再次创建它们会显示数据)。
- (void)storesWillChange:(NSNotification *)notification {
NSManagedObjectContext *context = self.managedObjectContext;
[context performBlockAndWait:^{
NSError *error;
if ([context hasChanges]) {
BOOL success = [context save:&error];
if (!success && error) {
// perform error handling
NSLog(@"%@",[error localizedDescription]);
}
}
[context reset];
}];
}
所以:我可以做些什么来开始查明为什么 NSFetchedResultsController 没有按应有的方式更新?
【问题讨论】:
-
嗨,Jordan,您是否检查过 NSFetchedResultsController 是否没有收到更新,或者数据是否未存储在 coredata 中?在模拟器中,这非常容易跟踪 - 请查看 sqlite 文件。如果数据库可能为空:您是否总是对两者使用主上下文/相同的上下文?
-
@Lepidopteron 数据在那里,这可以通过重新加载表格视图来确认。我只使用一个上下文。
标签: ios iphone objective-c ipad core-data