快速请求coredata和删除

时间:2015-08-27 17:17:57

标签: swift core-data

我想请求我所有的核心数据,其中" 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"是不是> =今天的日期?

1 个答案:

答案 0 :(得分:0)

如果您需要支持iOS 8.x或OS X Yosemite或更早版本,则需要获取每个对象然后将其删除。写另一个与你所拥有的谓词相反的谓词。执行该获取请求。然后遍历找到的对象并向每个对象发送deleteObject。保存托管对象上下文。如果您要删除大量对象,这可能需要一段时间。

对于iOS 9和El Capitan,您可以使用enter image description here中描述的NSBatchDeleteRequest。对于大量已删除的对象,NSBatchDeleteRequest要快得多。您没有将每个对象加载到内存中只是为了删除它。您还绕过了一些验证规则,并且必须刷新您的MOC才能看到更改 - 这可能会产生不良后果,具体取决于您的使用情况。