如何一次删除多个核心数据对象?
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() 一次删除多个字符?