swift - 清除内存中存储类型

标签 swift core-data nsmanagedobjectcontext

我想从核心数据中删除之前保存的所有对象。我使用的是内存存储类型,因此 NSBatchDeleteRequest 不是一个选项。

我尝试在上下文中调用reset(),但是它似乎没有执行任何操作。

我有以下代码:

viewContext.reset()
let fetchRequest: NSFetchRequest<CompactJobManaged> = CompactJobManaged.fetchRequest()
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "highlightedAt", ascending: false),
                                NSSortDescriptor(key: "uploadedAt", ascending: true)]
print(try! viewContext.fetch(fetchRequest).count)

我希望底部的 print 语句在调用 reset() 后打印出 0,但相反,它打印出先前已保存的对象数量,尽管调用reset() 之前。

我可能为此目的滥用了 reset() 函数,但我不知道有任何其他方法可以从内存存储中批量删除所有对象。

如有任何帮助,我们将不胜感激。

最佳答案

你有没有尝试过这样的事情:

do {
    try persistentStoreCoordinator.destroyPersistentStoreAtURL(persistentStoreURL, withType: NSSQLiteStoreType, options: nil)

} catch {
    // Error Handling
}

关于swift - 清除内存中存储类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54289451/

相关文章:

ios - CloudKit - 如何共享多个记录和检索共享记录?

iOS - 在更新到新版本时保留旧的 sqlite 数据库

ios - 如何在 if 语句中使用可选值?

ios - 当我实现 Parse 时,我得到 "fatal error: unexpectedly found nil while unwrapping an Optional value"

objective-c - 从多对多关系中获取核心数据

Swift UIApplication.delegate 只能在主线程中使用

ios - 如何在MagicalRecord版本> = 2.0中使用上下文?

ios - performBlockAndWait 在 iOS 7 上具有私有(private)队列死锁父级的子上下文

iphone - 这种方法会导致并发问题吗?

ios - 如何声明继承的内置协议(protocol),以便可以从另一个框架或应用程序导入它?