3
爲了從我呼籲入境我的表視圖細胞實體獲取信息,我有這樣的代碼:NSFetchedResultsController返回對象與另一個上下文
Entry *entry = [self.appDelegate.fetchedResultsController objectAtIndexPath:indexPath];
NSLog(@"timeline entry contexts: %@ and %@", [[AppDelegate applicationDelegate] managedObjectContext], [entry managedObjectContext]);
兩個managedObjectContexts返回爲不同的。這是我獲取結果控制器:
- (NSFetchedResultsController *)fetchedResultsController {
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Entry" inManagedObjectContext:[AppDelegate applicationDelegate].managedObjectContext];
[fetchRequest setEntity:entity];
[fetchRequest setFetchBatchSize:20];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"creationDate" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:[AppDelegate applicationDelegate].managedObjectContext sectionNameKeyPath:@"sectionIdentifier" cacheName:@"Root"];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;
self.fetchedResultsController.delegate = self;
return _fetchedResultsController;
}
這是我的商務部:
- (NSManagedObjectContext *)managedObjectContext {
if (_managedObjectContext != nil) {
return _managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
NSManagedObjectContext* moc = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
[moc performBlockAndWait:^{
[moc setPersistentStoreCoordinator: coordinator];
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(mergeChangesFrom_iCloud:) name:NSPersistentStoreDidImportUbiquitousContentChangesNotification object:coordinator];
}];
_managedObjectContext = moc;
_managedObjectContext.mergePolicy = [[NSMergePolicy alloc]
initWithMergeType:NSMergeByPropertyObjectTrumpMergePolicyType];
}
return _managedObjectContext;
}
我不能確定爲什麼它返回一個不同的MOC。有什麼想法嗎?
你設置'_managedObjectContext = nil'的任何地方你的問題程序?然後'[[AppDelegate applicationDelegate] managedObjectContext]'會返回一個新創建的MOC,而'self.appDelegate.fetchedResultsController'可能仍然使用舊的MOC。 –
兩件事;嘗試將FRC的cacheName屬性設置爲nil而不是@「Root」。其次,不要在你的MOC上設置合併策略。應該幫助你。感覺合併政策是你的問題。 – NonatomicRetain