我正在研究使用coredata的ipad應用程序。它下載有關網上數據庫的信息,並將它們記錄在coredata中。該應用程序基於分割視圖。我的問題是在後臺更新數據。
以下是我的工作方式:
- 我創建了一個NSOperation,用於下載和更新數據。
- 這的NSOperation使用不同的NSManagedObjectContext比的appDelegate的背景下,這個函數返回後,即在的appDelegate:在兩個不同的過程中更新和刪除實體
(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的元素,我真的不知道如何管理在後臺進程中的變化,因爲裏面有一個循環瀏覽所有的enti關係:如果我刪除一個實體,當後臺循環處於相同的權限時,這是......非常糟糕......
我的解決方案只是在我刪除一個實體時停止更新過程,然後重新啓動它,只是...
但我意識到,在「主」上下文中所做的更改並不適用於我剛剛爲更新創建的新上下文中。
所以我問你:爲什麼變化不適用於新的環境?如果這是錯誤的方式,你如何做到這一點?使用mergeChangesFromContext或其他東西?
非常感謝您。
您應該點擊此答案旁邊的複選標記,以便系統顯示回答的問題。你被允許回答你自己的問題。 – TechZen 2010-08-04 13:35:33