2014-11-06 143 views
0

我需要實現Core Data對象的取消/保存行爲。我有一個UITableView,我從中獲得了來自NSFetchedResultsController的數據。在某些情況下只保存NSManagedContext

- (void) configureWithCategoryItem: (CategoryItem *) categoryItem 
{ 
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:[CategoryItem entityName]]; 

    request.predicate = [NSPredicate predicateWithFormat:@"categoryId = %@", categoryItem.categoryId]; 
    request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"title" ascending:YES]]; 

    self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request 
                     managedObjectContext:[CategoryItem defaultContext] 
                      sectionNameKeyPath:@"title" 
                        cacheName:nil]; 
    [self.fetchedResultsController performFetch: NULL]; 
    self.layers = [self categoryLayers]; 
    self.sectionTitle = categoryItem.title; 
} 

每次點擊單元格在這個表視圖

LayerItem *layerItem = [self.layers objectAtIndex:indexPath.row]; 
layerItem.isSelected = [NSNumber numberWithBool:YES]; 

而在導航欄我有兩個按鈕: 取消 - 我需要沒有結果保存到核心駁回控制器數據, 保存 - 我需要保存結果並關閉控制器

保存方法現在看起來像這樣:

- (void) saveChanges 
{ 
    NSManagedObjectContext *localContext = self.fetchedResultsController.managedObjectContext; 
    if ([localContext hasChanges]) { 
     [localContext save: NULL]; 
     [[NSNotificationCenter defaultCenter] postNotificationName:kEADatabaseWasUpdated object:nil]; 
    } 
} 

Core Data有沒有一些儀器可以幫我實現這個行爲?

我試圖單獨使用NSManagedObjectContextmergeChangesFromContextDidSaveNotification,但沒有收到好結果..等待您的幫助。

回答

0
- (void) cancelChanges 
{ 
    NSManagedObjectContext *localContext = self.fetchedResultsController.managedObjectContext; 
    [localContext rollback]; 
} 
相關問題