我想请求我所有的核心数据,其中" 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"是不是> =今天的日期?
答案 0 :(得分:0)
如果您需要支持iOS 8.x或OS X Yosemite或更早版本,则需要获取每个对象然后将其删除。写另一个与你所拥有的谓词相反的谓词。执行该获取请求。然后遍历找到的对象并向每个对象发送deleteObject
。保存托管对象上下文。如果您要删除大量对象,这可能需要一段时间。
对于iOS 9和El Capitan,您可以使用中描述的NSBatchDeleteRequest
。对于大量已删除的对象,NSBatchDeleteRequest
要快得多。您没有将每个对象加载到内存中只是为了删除它。您还绕过了一些验证规则,并且必须刷新您的MOC才能看到更改 - 这可能会产生不良后果,具体取决于您的使用情况。