0

我正在开发一个新的核心数据应用程序,我创建了一个NSArrayController(实体模式)进行绑定,它工作得很好,但当SQLite存储更改(更改来自其他客户端使用TICoreDataSync库)我强制tableView刷新没有成功。下面的代码:可可Mac应用程序和NSTableView不刷新与NSArrayController和NSManagedObjectContext

NSError *saveError = nil; 
    [self.managedObjectContext save:&saveError]; 
    if (saveError != nil) { 
     NSLog(@"%s %@", __PRETTY_FUNCTION__, saveError); 
    } 
[arrayController fetch:nil]; 
[tableView reloadData]; 

如果我关闭应用程序,并再次启动它,我可以看到我的tableView的变化,但我想它会自动刷新。提前致谢。

回答

0

当TICDS进行更改时,您是否要求mergeChangesFromContextDidSaveNotification:更新您的上下文?

您应该实现此委托方法:

-(void)documentSyncManager:(TICDSDocumentSyncManager *)aSyncManager 
    didMakeChangesToObjectsInBackgroundContextAndSaveWithNotification:(NSNotification *)aNotification 

确保你在适当的线程调用mergeChangesFromContextDidSaveNotification:

同样值得看看我正在开发的同步框架叫做Ensembles。 TICDS目前没有太多维护—我在过去的工作—和Ensembles相当容易使用。

+0

感谢您提出我的Ensembles框架,我会看看,我正在使用TICDS正在工作的iOS应用程序的OSX客户端上工作,所以我应该计划迁移。我试图委托方法没有成功: - (无效)documentSyncManager:(TICDSDocumentSyncManager *)aSyncManager didMakeChangesToObjectsInBackgroundContextAndSaveWithNotification:(NSNotification *)aNotification { [arrayController取:无]; [tableView reloadData]; } – user3432143

0

添加以下行前获取和它的工作原理:

[arrayController setManagedObjectContext:[[NSApp delegate] managedObjectContext]]; 

适合我,它的作品,但我不明白为什么我需要设置每次我开始获取,该managedObjectContext设置在启动或它应用程序启动后不会显示值。

相关问题