- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
当使用带有 loadPersistentStores
的"new"iOS 10 Core Data 设置时,如何重置/删除所有内容?我想避免使用实体名称,但喜欢使用类似 destroyPersistentStore
的名称。
我设置我的堆栈如下:
persistentContainer = NSPersistentContainer(name: "CoreData", managedObjectModel: mom)
let storeDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let url = storeDirectory.appendingPathComponent("CoreData.sqlite")
let description = NSPersistentStoreDescription(url: url)
description.shouldInferMappingModelAutomatically = true
description.shouldMigrateStoreAutomatically = true
persistentContainer.persistentStoreDescriptions = [description]
persistentContainer.loadPersistentStores(completionHandler: { (_, error) in
guard let error = error as NSError? else { return }
fatalError("Unresolved error: \(error), \(error.userInfo)")
})
persistentContainer.viewContext.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy
persistentContainer.viewContext.undoManager = nil
persistentContainer.viewContext.automaticallyMergesChangesFromParent = true
我只找到了解决方案,例如BatchDeleteRequests,我需要知道所有实体名称,但我想要更通用的东西并重置所有内容 - 当用户注销时,我需要最高效/最安全的方式。
最佳答案
这个建议执行以下步骤
persistentStoreCoordinator
获取商店代码假定 iOS 10+ NSPersistentContainer
API 的标准实现,在 AppDelegate 和 SQLite 存储中具有 persistentStoreCoordinator
和 managedObjectContext
属性。
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let persistentStoreCoordinator = appDelegate.persistentContainer.persistentStoreCoordinator
let currentStore = persistentStoreCoordinator.persistentStores.last!
let currentStoreURL = currentStore.url!
appDelegate.managedObjectContext.reset()
do {
try persistentStoreCoordinator.destroyPersistentStore(at: currentStoreURL, ofType: NSSQLiteStoreType)
try persistentStoreCoordinator.addPersistentStore(ofType: NSSQLiteStoreType, configurationName: nil, at: currentStoreURL)
} catch {
print(error)
}
在 iOS 中,我建议立即添加新商店,因为通常应用程序不会终止,因此不会重新创建持久容器。
关于swift - 核心数据 : how to reset everything when setup with loadPersistentStores?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53946485/
我正在尝试在 Xcode 上开发一个使用核心数据的应用程序,但是,当我提交该应用程序进行测试审查时,它在他们的模拟器上崩溃了,但在我的模拟器上却没有。这是怎么回事? 对于初学者来说,我最近完成了一个应
我的 AppDelegate 带有以下所有熟悉的核心数据模板: lazy var persistentContainer: NSPersistentContainer = { let cont
当使用带有 loadPersistentStores 的"new"iOS 10 Core Data 设置时,如何重置/删除所有内容?我想避免使用实体名称,但喜欢使用类似 destroyPersiste
我是一名优秀的程序员,十分优秀!