2010-05-05 114 views
0

我正在使用类似于苹果核心数据食谱示例代码的应用程序。我希望能够从详细视图中删除条目,就像苹果的联系人应用程序一样。如何从详细视图中删除核心数据条目?

下面的代码删除第一个条目而不是选定的条目。不知道我做错了什么。

NSIndexPath *indexPath = [myTableView indexPathForSelectedRow]; 
NSManagedObjectContext *context = [fetchedResultsController managedObjectContext]; 
[context deleteObject:[fetchedResultsController objectAtIndexPath:indexPath]]; 
[myTableView reloadData]; 

回答

0

最可能的问题是indexPathForSelectedRow:没有返回您认为它的索引路径。或者,如果您在配置抓取的结果控制器时没有正确设置部分名称键路径,则可能会得到奇数返回值,因为它无法跟踪哪些行与哪个部分一起使用。

+0

我可能会这样做的全部错误。我想让用户能够取消他们开始的条目。或者当他们完成创建条目时,可以删除它。我在AddViewController中有一个取消按钮,它是触发上述代码的RootController的委托。 如何获得IndexPath以了解用户当前正在使用的条目? – Sam 2010-05-05 17:40:24

+0

不要打扰indexPath。你应该有一个对managedObject的引用,并且可以从managedObjectContext中删除它。 fetchedResultsController应该为你处理删除并自动更新表格。 – MrHen 2010-05-05 18:09:24

+0

是的,我同意。如果手头有对象,比如详细视图,则不必在提取的结果控制器或其他任何地方使用其索引。每个托管对象都与其上下文绑定。只要告诉上下文将其删除并将其删除。获取的结果控制器将观察上下文并自动为您更新表格。 – TechZen 2010-05-05 22:07:26

2

感谢您的帮助。这是伎俩的代码

NSManagedObjectContext *context = [fetchedResultsController managedObjectContext]; 
[context deleteObject:entry]; 
[myTableView reloadData]; 
相关问题