如何一次删除多个核心数据对象?

Posted

技术标签:

【中文标题】如何一次删除多个核心数据对象?【英文标题】:How to remove many core data objects at once? 【发布时间】:2012-07-11 15:56:23 【问题描述】:

我正在编写一个 ios 应用程序,我正在使用 Core Data 存储一系列 Event 对象(例如生日、圣诞节或会议等)。每个Event 对象都有一个与之关联的NSDate 类型的日期属性。

在我的程序过程中,我收集了一个 NSDate 对象的 NSArray,我想知道如何删除与这些日期关联的核心数据对象?例如,如果我有一个由日期 11/7 和 12/9 组成的数组,如何删除日期属性为 11/7 或 12/9 的任何 Event 对象?

我想到的一种可能性是使用谓词和获取请求获取所有相应的Event 对象,然后转身将它们全部删除;但是,这似乎有点低效。如果我的Event 对象之一真的非常大……那会不会需要永远获取它,以便我可以转身删除它?

我只是想知道是否有更优雅的方式来处理这个...谢谢

【问题讨论】:

获取它们不会很慢。核心数据可以将对象作为故障返回,这意味着不会获取它们的任何属性,只获取它们的 id。在这里获取和删除是正确的解决方案。 【参考方案1】:

您可以通过一次 fetch 处理这个问题 - 使用 IN 运算符构建一个谓词,使用您的 NSArray 日期作为集合,执行 fetch 请求(正如 Mike 上面所说,这仍然会比较快),然后删除对象。有关详细信息,请参阅谓词编程指南中的 Aggregate Operators。

【讨论】:

以上是关于如何一次删除多个核心数据对象?的主要内容,如果未能解决你的问题,请参考以下文章

如果在循环中插入对象,应该多久调用一次 NSManagedObjectContext 保存?

如何在 Hive 中使用 regexp_replace() 一次删除多个字符?

一次将多个操作添加到核心 - 数据关系

在 MySQL 中一次性删除多个表

如何一次从CloudFormation中删除多个全局二级索引?

swift 如何一次删除多个 PHAsset