我正在使用coredata的ipad應用程序。它下載有關網上數據庫的信息,並將它們記錄在coredata中。該應用程序基於分割視圖。我的問題是在後臺下載和記錄數據。
以下是我的工作方法:
- 我創建了一個NSOperation,用於下載和記錄數據。
- 這的NSOperation使用不同的NSManagedObjectContext比的appDelegate的背景下,這個函數返回後,即在的appDelegate:如何同步兩個NSManagedObjectContext
(NSManagedObjectContext*)newContextToMainStore {
NSPersistentStoreCoordinator *coord = nil;
coord = [self persistentStoreCoordinator];
NSManagedObjectContext *moc = [[NSManagedObjectContext alloc] init];
[moc setPersistentStoreCoordinator:coord];
return [moc autorelease];
}
- 我已經在的NSOperation的觀察者來說,這將調用這個函數在的appDelegate當我保存的情況下,修改委託過上下文:
- (void)mergeChangesFromContextSaveNotification:(NSNotification*)notification {
[[self managedObjectContext]mergeChangesFromContextDidSaveNotification:notification];
}
但是我有一個問題,同步不起作用,因爲在RootViewController的數據(這是一個UITableViewController ),它具有用th的上下文初始化的NSManagedObjectContext e appDelegate並使用NSFetchedResultsController作爲數據源,不會自動實現信息,因爲它通常必須執行。
所以我問你:
我做錯了什麼?使用兩個不同的上下文並同步它們的好方法是嗎?
感謝您的回答。 NSFetchedResultControllerDelegate被實現。實際上,我的系統在我的appDelegate中啓動時會工作,但不會在稍後調用的viewController中運行。我正在尋找我的錯誤,我認爲這只是一個小錯誤... – zocario 2010-07-13 07:54:21
嗨,我很困惑,我發現我的錯誤:我做了兩個NSOperation子類,在第二個,我已經忘記添加觀察者在兩種情況下進行修改。 感謝您的關注! – zocario 2010-07-13 08:08:32