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設置在啓動或它應用程序啓動後不會顯示值。

相關問題