2014-11-06 3 views
0

Core Data 개체에 대한 취소/저장 동작을 구현해야합니다. 나는 NSFetchedResultsController에서 데이터를 얻은 UITableView을 가지고 있습니다. - 내가 코어에 결과를 저장하지 않고 컨트롤러를 기각 할 필요가 취소일부 경우에만 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]; 
}