我正在编写一个 OS X 应用程序,它需要能够删除其核心数据存储中的所有“SongEntity”实例。
但是,当我尝试执行 NSBatchDeleteRequest 时,我的应用程序崩溃了,控制台输出如下(摘录):



这是我的实现:

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.

我尝试将商店类型从 NSXMLStoreType(macOS 模板默认值)更改为 NSSQLiteStoreType,现在它可以工作了。

最佳答案

我在我的持久存储上使用 NSInMemoryStoreType 也遇到了这个问题。事实证明,并非所有存储类型都支持批量删除,因此我不得不切换到使用 fetch 请求并简单地遍历托管对象并一个一个地删除它们。

关于swift - 使用 "Unknown Command Type <NSBatchDeleteRequest,..>"执行 NSBatchDeleteRequest 时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34238852/

10-10 20:28