我想请求所有我的核心数据,其中"mhd"字段>=今天的日期。下面的代码运行良好:
func DatenAbrufen() {
let calendar = NSCalendar.currentCalendar()
let AktuellesDatum = calendar.startOfDayForDate(NSDate())
let fetchRequest = NSFetchRequest(entityName: "LM_ITEMS")
fetchRequest.predicate = NSPredicate(format: "mhd >= %@", AktuellesDatum)
if let fetchResults = managedObjectContext!.executeFetchRequest(fetchRequest, error: nil) as? [LM_ITEMS] {
lebensmittel = fetchResults
}
}
我如何删除这个查询中所有其他数据,其中"mhd"不是>=今天的日期?
如果您需要支持iOS 8。或OS x Yosemite,或更早的版本,你需要获取每个对象,然后删除它。写出另一个与你已有的相反的谓词。执行那个获取请求。然后遍历找到的对象并向每个对象发送一个deleteObject
。保存托管对象上下文。如果要删除很多对象,这可能需要很长时间。
对于iOS 9和El Capitan,您可以使用WWDC 2015会议220中描述的NSBatchDeleteRequest
。对于大量删除对象,NSBatchDeleteRequest
的速度要快得多。你不是将每个对象加载到内存中然后删除它。您还可以绕过一些验证规则,并且必须刷新MOC才能看到更改—这可能是不希望看到的结果,具体取决于您的使用情况。