【问题标题】:Delete Core Data for Entity in Swift 2在 Swift 2 中删除实体的核心数据
【发布时间】:2016-04-24 21:52:05
【问题描述】:

如何在 Swift 中删除实体的 Core Data 中的所有条目?

我想要一个deleteAll()方法,这样我就可以清空数据库了。

这是我目前所拥有的:

func deleteAllCoreData() {
    let fetchRequest = NSFetchRequest(entityName: "DataPoint")
    let deleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest)

    do {
        try coordinator.executeRequest(deleteRequest, withContext: managedContext)
    } catch let error as NSError {
        print("Could not fetch \(error), \(error.userInfo)")
    }

}

但它有一个错误:

未知的命令类型(实体:DataPoint;谓词: ((空值));排序描述符:((空));类型: NSManagedObjectIDResultType; ) >

【问题讨论】:

    标签: swift core-data


    【解决方案1】:

    iOS 9 添加了一个名为 NSBatchDeleteRequest 的新类,它允许您轻松删除与谓词匹配的对象,而无需将它们全部加载到内存中。以下是您的使用方法:

    let fetchRequest = NSFetchRequest(entityName: "Foo")
    let deleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest)
    
    do {
        //`myPersistentStoreCoordinator` is from the core data stack
        try myPersistentStoreCoordinator.executeRequest(deleteRequest, withContext: myContext)
    } catch let error as NSError {
        // TODO: handle the error
    }
    

    【讨论】:

    • 更新了我的问题,仍然有一些错误。但我想我已经接近了。
    • 看看这个教程,learncoredata.com/nsbatchdeleterequest-in-ios-9,也许你会觉得有用。
    • 我的应用适用于 OS X。我不确定 NSBatchDeleteRequest 是否适用于 OS X。
    • 它似乎也适用于 OS X。仔细查看NSBatchDeleteRequest 头文件(ObjC),你会看到下一个类宏——NS_CLASS_AVAILABLE(10_11,9_0)
    猜你喜欢
    • 1970-01-01
    • 2017-02-16
    • 2012-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 1970-01-01
    相关资源
    最近更新 更多