【发布时间】:2016-03-18 06:29:13
【问题描述】:
我正在编写一个 OS X 应用程序,它需要能够删除其核心数据存储中保存的所有“SongEntity”实例。 但是,当我尝试执行 NSBatchDeleteRequest 时,我的应用程序崩溃,并出现以下控制台输出(摘录):
未知的命令类型(实体:SongEntity;谓词: ((空值));排序描述符:((空));类型: NSManagedObjectIDResultType; ) >
这是我的实现:
func clearStore()
{
let fetchRequest = NSFetchRequest(entityName: "SongEntity")
let deleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest)
do
{
try managedObjectContext.executeRequest(deleteRequest)
}
catch
{
fatalError("Not able to perform operation: \(error)")
}
managedObjectContext.reset()
}
任何帮助将不胜感激
编辑:
事实证明,这个问题与所选的商店类型有关:
来自班级NSBatchDeleteRequest:
// May not be supported by all store types.
我尝试将 store-type 从 NSXMLStoreType(macOS 模板默认)更改为 NSSQLiteStoreType,现在它可以工作了。
【问题讨论】:
-
“在某些情况下”? – 注意帽子 NSBatchDeleteRequest 需要 iOS 9。
-
我删除了那个措辞(谢谢)。所以 NSBatchDeleteRequest 在 OS X 上不可用...?从El Capitan Release Note 我了解到,El Capitan 支持 NSBatchDeleteRequest
-
抱歉,我忽略了 [osx] 标签。我不知道它是否在 OS X 上可用(以及从什么时候开始)。