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;
}
}
변경하려는 코드를 삽입하십시오. 그 다음에 [컨텍스트 updatedObjects]를 로그하여 어떤 객체에 업데이트가 있는지 확인할 수 있습니다. –
안녕 대니얼, updatedObjects에서 변경된 UserEntity 객체를 볼 수 있습니다. 변경 사항이 없습니다. ** 배경 절약 (루트) ** 문맥 - 저장하지 않음 –
더 나은 이해를 얻으려면 다음과 같은 NSManagedObjectContexts를 사용해야합니다. 가져온 결과 컨트롤러 설정 및 개체 업데이트. –