重新创建它,当我推出了全新的升级,以我的应用程序实现新的核心数据实体,我的应用程序会崩溃。删除核心数据的数据库,并更新
如何删除整个核心数据的数据库,并重新创建它?我不照顾什么在那里,因为数据是在应用程序加载时,经常更新的反正。它主要用于高速缓存,或者直到它可以与服务器同步。
重新创建它,当我推出了全新的升级,以我的应用程序实现新的核心数据实体,我的应用程序会崩溃。删除核心数据的数据库,并更新
如何删除整个核心数据的数据库,并重新创建它?我不照顾什么在那里,因为数据是在应用程序加载时,经常更新的反正。它主要用于高速缓存,或者直到它可以与服务器同步。
初始化之前您NSPersistentContainer
:
Model.sqlite
持久性存储文件.sqlite
的扩展名(Model.sqlite-shm
,Model.sqlite-wal
)。这是什么,当我实例化我CoreDataController我使用:
private override init() {
// This resource is the same name as your xcdatamodeld contained in your project.
guard let modelURL = NSBundle(forClass:CoreDataController.classForCoder()).URLForResource("YOURAPP", withExtension:"momd") else {
fatalError("Error loading model from bundle")
}
// The managed object model for the application. It is a fatal error for the application not to be able to find and load its model.
guard let mom = NSManagedObjectModel(contentsOfURL: modelURL) else {
fatalError("Error initializing mom from: \(modelURL)")
}
let psc = NSPersistentStoreCoordinator(managedObjectModel: mom)
self.managedObjectContext = NSManagedObjectContext(concurrencyType: .MainQueueConcurrencyType)
self.managedObjectContext.persistentStoreCoordinator = psc
let storeURL = CoreDataController.storeUrl
do {
try psc.addPersistentStoreWithType(CoreDataController.storeType(), configuration: nil, URL: storeURL, options: nil)
} catch { //Exception means your database leads to error, so drop it, and create a new one
do {
try NSFileManager.defaultManager().removeItemAtURL(storeURL)
try psc.addPersistentStoreWithType(CoreDataController.storeType(), configuration: nil, URL: storeURL, options: nil)}
catch {
fatalError("Error migrating store: \(error)")
}
}
super.init()
}
您不必删除整个核心数据的数据库。只需使用核心数据'Migration'来解决这个问题。 – Poles
这可以帮助http://jamesonquave.com/blog/core-data-migrations-swift-tutorial/ – Poles
@Poles迁移是一个容易出错的过程,很多应用程序简单地想要删除表并重新开始。例如,我在Android中就是这么做的。 –