【问题标题】:How do you delete a core data entry from the detail view?如何从详细视图中删除核心数据条目?
【发布时间】:2023-03-09 15:25:02
【问题描述】:

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

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

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

【问题讨论】:

    标签: iphone core-data nsmanagedobject nsmanagedobjectcontext


    【解决方案1】:

    感谢您的帮助。这就是成功的代码

    NSManagedObjectContext *context = [fetchedResultsController managedObjectContext];
    [context deleteObject:entry];
    [myTableView reloadData];
    

    【讨论】:

      【解决方案2】:

      最可能的问题是indexPathForSelectedRow: 没有返回您认为的索引路径。或者,如果您在配置 fetched results 控制器时未正确设置部分名称键路径,那么您可能会得到奇怪的返回,因为它会丢失对哪些行与哪个部分一起使用的跟踪。

      【讨论】:

      • 我可能搞错了。我想让用户能够取消他们开始的条目。或者当他们完成创建条目时,可以将其删除。我在 AddViewController 中有一个取消按钮,它是触发上述代码的 RootController 的委托。如何让 IndexPath 知道用户当前正在使用的条目?
      • 不要打扰 indexPath。您应该有对 managedObject 的引用,并且可以从 managedObjectContext 中删除它。 fetchedResultsController 应该为您处理删除并自动更新表格。
      • 是的,我同意。如果您手头有对象,例如在详细视图中,那么您不必在获取的结果控制器或其他任何地方使用它的索引。每个托管对象都与其上下文相关联。只需告诉上下文删除它,它就消失了。获取的结果控制器将观察上下文并自动为您更新表格。
      • 看起来像吗? -(void)deleteEntry { NSManagedObjectContext *context; [上下文删除对象:条目]; }
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-06
      • 2011-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多