Swift Note

兴趣是最好的老师

Swift CoreData 简单迁移

使用coredata时,常常会遇到数据表变更的情况,这时就需要将数据库迁移,嗯,migrate,否则,会报错,导致 app crash 掉。

如果只是增删实体和属性,可以使用轻量迁移的方法,很简单,复杂的迁移逻辑我还没有遇到,这里不讨论了。

迁移步骤:

  1. 选择数据库 .xcdatamodeld 文件
  2. 菜单栏 Edit -> add Model Version
  3. 系统会自己 fork 一份 .xcdatamodel 文件,比如叫 swiftnote v2.xcdatamodel ,名字自己定
  4. 然后在右侧的属性界面,选择 current 为新建的 model 就好了:
  5. 然后更新 NSManagedObject 子类。

基本的设置就这些了,然后我们更新一下 appdelegate.swift 中 Core Data 的实现就好了:

通常我们用 Core Data 就直接用系统的方法了,除非复杂的应用,基本下面的方法是不改的。

var failureReason = "There was an error creating or loading the application's saved data."  
    do {
        try coordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: nil)
    }

更改后:

var failureReason = "There was an error creating or loading the application's saved data."  
    do {
        let swOptions = [
                    NSMigratePersistentStoresAutomaticallyOption: true,
                    NSInferMappingModelAutomaticallyOption:true
        ]

        try coordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: swOptions)
    }

嗯,就是增加了一个 option 的字典。

到此,简单轻量迁移完成。

神飞

没有什么能够阻挡,我对自由的向往