代码之家  ›  专栏  ›  技术社区  ›  Andrew Arrow

是否有一种方法可以使用NSPredicate在核心数据中发出NSDeleteRequest而不是NSFetchRequest?

  •  2
  • Andrew Arrow  · 技术社区  · 15 年前

    我可以进行NSPredicate并使用NSFetchRequest发出:

    从foo中选择*x=y

    我如何发出:

    从foo中删除,其中x=y

    ?

    删除1000行的唯一方法似乎是获取它们,循环遍历它们,并在每个NSManagedObject上调用delete。是这样吗?为什么我不能发出一条delete sql语句?

    2 回复  |  直到 15 年前
        1
  •  4
  •   Jim Correia    15 年前

    您必须获取托管对象,然后发送 -deleteObject: 指向要删除的每个对象的上下文。

    必须将对象提取到内存中,以便核心数据能够遵守关系中指定的级联或无效规则。

    如果您在delete中遇到特定的性能问题(超出所需的获取范围),那么在Instruments中分析操作会很有帮助。如果在应用级联/置零规则时单独触发故障,则预取相关对象将提高性能。

        2
  •  0
  •   rebo rebo    15 年前

    您可以将类别方法-(executeDeleteWithRequest:error:)添加到NSManagedObjectContext。