Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 神奇记录NSFetchedResultsController NSManagedObject更改保存不起作用_Ios_Core Data_Magicalrecord_Nsfetchedresultscontroller - Fatal编程技术网

Ios 神奇记录NSFetchedResultsController NSManagedObject更改保存不起作用

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

我已经使用NSFetchedResultController将数据加载到UITableView中。我正在使用MagicalRecord进行coredata操作

我已经在默认上下文中创建了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);
}];
稍后,在保存按钮单击操作后,我尝试像下面这样保存

-(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获取数据并更新更改。