Alb*_*sen 5 macos core-data swift
我正在编写OS X应用程序,它需要能够删除其Core Data存储中保存的所有"SongEntity"实例.但是,当我尝试执行NSBatchDeleteRequest时,我的应用程序崩溃,使用以下控制台输出(摘录):
未知命令类型(实体:SongEntity;谓词:((null)); sortDescriptors:((null)); type: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()
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感激
编辑:
事实证明,这个问题与所选的商店类型有关:来自班级NSBatchDeleteRequest:
// May not be supported by all store types.
Run Code Online (Sandbox Code Playgroud)
我尝试将商店类型NSXMLStoreType(默认为macOS模板)更改为NSSQLiteStoreType现在可以使用.
Ror*_*ior 17
我在我的持久存储上使用 NSInMemoryStoreType 也遇到了这个问题。事实证明,并非所有存储类型都支持批量删除,因此我不得不切换到使用 fetch 请求并简单地遍历托管对象并一个一个地删除它们。
NSBatchDeleteRequest在持久存储协调器上执行,而不是在托管对象上下文上执行。
try persistentStoreCoordinator.executeFetchRequest(
batchDeleteRequest, withContext:context
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1478 次 |
| 最近记录: |