2014-09-22 3 views
1

NSFetchedResultController를 사용하여 데이터를 UITableView로로드했습니다. MagoredRecord를 사용하여 코어 데이터 연산을 수행합니다.마법의 레코드 NSFetchedResultsController NSManagedObject 변경 저장 작동하지 않음

나는 기본 컨텍스트에 NSFetchedResultsController을 만든 및 didSelectRowAtIndexPath에 내가처럼 사용하고 나중에 내가 좋아하는 저장하려고 한 버튼 클릭 동작을 저장시

-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
[tableView deselectRowAtIndexPath:indexPath animated:YES]; 
UserEntity * user = [userFetchedResultsController objectAtIndexPath:indexPath]; 

// do some changes to user Object 
} 

아래 아래

[[NSManagedObjectContext defaultContext] saveToPersistentStoreWithCompletion:^(BOOL success, NSError *error) { 
    DLog(@" isSaved : %d ",success); 
}]; 

이지만 변경 사항이 저장되지 않습니다.

2014-09-22 17:12:50.752 _block_invoke [Line 210] has Changed 1 
2014-09-22 17:12:50.752 MR_saveWithOptions:completion:](0x7fca7214e7d0) → Saving <NSManagedObjectContext (0x7fca7214e7d0): *** DEFAULT ***> on *** MAIN THREAD *** 

2014-09-22 17:12:50.753 MR_saveWithOptions:completion:](0x7fca7214e7d0) → Save Parents? 1 

2014-09-22 17:12:50.753 MR_saveWithOptions:completion:](0x7fca7214e7d0) → Save Synchronously? 0 

2014-09-22 17:12:50.759 MR_saveWithOptions:completion:](0x7fca7214c430) NO CHANGES IN ** BACKGROUND SAVING (ROOT) ** CONTEXT - NOT SAVING 

2014-09-22 17:12:50.759 _block_invoke_2 [Line 213] isSaved : 0 

분명 NSManagedObject에는 변경 사항이 있지만 로그에 변경 사항 없음이 표시되어 누구든지이 설명을 할 수 있습니까?

UPDATE : 어떤 제안은 매우 도움이 될 것

DLog(@" updated Objects %@ ", [[NSManagedObjectContext defaultContext] updatedObjects]); 

updated Objects {(
<UserEntity: 0x1780cd4a0> (entity: UserEntity; id: 0xd000000000040000 <x-coredata://1E0810DA-1A23-4337-B279-3957BE4D207F/UserEntity/p1> ; data: { 
    // entity data removed 
}) 
)} 

NO CHANGES IN ** BACKGROUND SAVING (ROOT) ** CONTEXT - NOT SAVING 

작동하지

내가의 DefaultContext UpdatedObjects 목록에서 변경된 객체를 볼 수, 아직 저장하지

업데이트 2 :

내가 만드는 방법은 다음과 같습니다. NSFetchedResultsController

-(NSFetchedResultsController*) userFetchedResultsController { 
@autoreleasepool { 
    if(userFetchedResultsController == nil){ 

     NSFetchRequest *fetchRequest = [UserEntity requestAllSortedBy:@"userName" ascending:YES]; 
     [fetchRequest setFetchBatchSize:10]; 

     NSFetchedResultsController *theFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:[NSManagedObjectContext defaultContext] sectionNameKeyPath:nil cacheName:nil]; 

     userFetchedResultsController = theFetchedResultsController; 
     userFetchedResultsController.delegate = self; 
    } 
    return userFetchedResultsController; 
} 
} 
+0

변경하려는 코드를 삽입하십시오. 그 다음에 [컨텍스트 updatedObjects]를 로그하여 어떤 객체에 업데이트가 있는지 확인할 수 있습니다. –

+0

안녕 대니얼, updatedObjects에서 변경된 UserEntity 객체를 볼 수 있습니다. 변경 사항이 없습니다. ** 배경 절약 (루트) ** 문맥 - 저장하지 않음 –

+0

더 나은 이해를 얻으려면 다음과 같은 NSManagedObjectContexts를 사용해야합니다. 가져온 결과 컨트롤러 설정 및 개체 업데이트. –

답변

0

실제로는 내 측면에서 논리적 인 버그로 NSManagedObject 값을 재설정하여 문맥을 변경하지 않았습니다.

업데이트가 정상적으로 작동합니다.