我在不需要保存用户数据的 iOS 7+ 应用程序中使用 Core Data
,应用程序需要的所有数据都被请求到服务,并且可以随时恢复。因此,如果我在下一次应用程序更新中更改我的数据模型,我可以毫无问题地删除所有以前的数据并再次请求它们。但是我不知道如何在不执行迁移的情况下简单地用新的数据模型替换以前的数据模型,因为看起来我不需要那样做...
提前致谢
最佳答案
如果您的目标是 iOS 9 或更高版本,则使用 Swift 解决方案
共享的 CoreData 管理器:
class CoreDataContext {
static let datamodelName = "CoreDataTests"
static let storeType = "sqlite"
static let persistentContainer = NSPersistentContainer(name: datamodelName)
private static let url: URL = {
let url = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask)[0].appendingPathComponent("\(datamodelName).\(storeType)")
assert(FileManager.default.fileExists(atPath: url.path))
return url
}()
static func loadStores() {
persistentContainer.loadPersistentStores(completionHandler: { (nsPersistentStoreDescription, error) in
guard let error = error else {
return
}
fatalError(error.localizedDescription)
})
}
static func deleteAndRebuild() {
try! persistentContainer.persistentStoreCoordinator.destroyPersistentStore(at: url, ofType: storeType, options: nil)
loadStores()
}
}
仅在 appDelegate 中调用 loadStores
一次,并在您想要删除和重建数据库时调用 deleteAndRebuild
:)
关于ios - 核心数据 : how to just delete and rebuild the data store?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29027270/