在 Swift 2 中删除实体的核心数据
Posted
技术标签:
【中文标题】在 Swift 2 中删除实体的核心数据【英文标题】:Delete Core Data for Entity in 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; ) >
【问题讨论】:
【参考方案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)
。以上是关于在 Swift 2 中删除实体的核心数据的主要内容,如果未能解决你的问题,请参考以下文章