我正在开发一个新的Core Data应用程序,我创建了一个NSArrayController(实体模式)来进行绑定,它运行得很好但是当SQLite存储更改时(更改来自使用TICoreDataSync库的其他客户端)我强制执行tableView重新加载没有成功。代码如下:
NSError *saveError = nil;
[self.managedObjectContext save:&saveError];
if (saveError != nil) {
NSLog(@"%s %@", __PRETTY_FUNCTION__, saveError);
}
[arrayController fetch:nil];
[tableView reloadData];
如果我关闭应用程序并再次启动它,我可以在tableView中看到更改,但我希望它能自动刷新。提前谢谢。
答案 0 :(得分:0)
在TICDS进行更改时,您是否在调用mergeChangesFromContextDidSaveNotification:
来更新您的上下文?
您应该实现此委托方法:
-(void)documentSyncManager:(TICDSDocumentSyncManager *)aSyncManager
didMakeChangesToObjectsInBackgroundContextAndSaveWithNotification:(NSNotification *)aNotification
确保在相应的主题上调用mergeChangesFromContextDidSaveNotification:
。
另外值得一看我正在开发的名为Ensembles的同步框架。这些天TICDS没有得到很好的维护 - 我过去一直在研究它 - 而且Ensembles的使用起来相当容易。
答案 1 :(得分:0)
我在fetch之前添加了以下行,它可以工作:
[arrayController setManagedObjectContext:[[NSApp delegate] managedObjectContext]];
对我来说它很有用,但我不明白为什么每次开始提取时都需要设置它,在启动时设置managedObjectContext或者在应用程序启动时它不会显示值。