2014-11-06 116 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]; 
} 
相关问题