Ios 神奇记录NSFetchedResultsController NSManagedObject更改保存不起作用
我已经使用NSFetchedResultController将数据加载到UITableView中。我正在使用MagicalRecord进行coredata操作 我已经在默认上下文中创建了NSFetchedResultsController,并且在didSelectRowAtIndexPath上,我使用了它,如下所示Ios 神奇记录NSFetchedResultsController NSManagedObject更改保存不起作用,ios,core-data,magicalrecord,nsfetchedresultscontroller,Ios,Core Data,Magicalrecord,Nsfetchedresultscontroller,我已经使用NSFetchedResultController将数据加载到UITableView中。我正在使用MagicalRecord进行coredata操作 我已经在默认上下文中创建了NSFetchedResultsController,并且在didSelectRowAtIndexPath上,我使用了它,如下所示 -(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
-(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);
}];
稍后,在保存按钮单击操作后,我尝试像下面这样保存
-(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值,导致上下文没有任何更改
更新现在可以正常工作。请在进行更改的地方插入代码。然后,您可以记录[context updatedObjects]以查看哪些对象有更新:)嗨,daniel,我可以在updatedObjects中看到已更改的UserEntity对象,但当我尝试保存它时,会说与以前一样**后台保存中没有更改(根)**上下文-不保存为了更好地理解,我需要查看您用于以下操作的NSManagedObjectContext:设置获取的结果控制器并更新对象。我使用了Magic Record创建的defaultContext,检查更新2以了解我如何创建nsfetchedresultscontroller进行更新。我不使用任何上下文,而只是从nsfetchedresultscontroller获取数据并更新更改。