Swift请求coredata并删除



我想请求所有我的核心数据,其中"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才能看到更改—这可能是不希望看到的结果,具体取决于您的使用情况。

最新更新