【发布时间】:2012-03-14 12:38:43
【问题描述】:
我正在使用 NSFetchedResultsController 来填充和管理我的表数据源。
当用户选择某一行时,会弹出一个操作表,然后让用户更改该行的值:
NSManagedObject *managedObject = [fetchedResultsController objectAtIndexPath:selectedRowIndexPath];
[managedObject setValue:status forKey:@"status"];
这非常有效,我可以立即在 tableview 中看到更改。这意味着 NSFetchedResultsController 知道某些内容已更改,因此会重新加载该 tableviewcell。当我停止并(完全)退出我的应用程序然后重新打开它时,更改不会保存。
我认为 NSFetchedResultsConroller 负责保存更改。
每次更改后是否需要使用以下代码手动保存?
// Save the context.
NSError *error = nil;
if (![self.managedObjectContext save:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
或者可以在以下位置调用此代码:
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject
atIndexPath:(NSIndexPath *)indexPath
forChangeType:(NSFetchedResultsChangeType)type
newIndexPath:(NSIndexPath *)newIndexPath
【问题讨论】:
标签: objective-c ios xcode nsfetchedresultscontroller