Swift 如何向领域模型类添加字段

Swift 如何向领域模型类添加字段,swift,realm,Swift,Realm,我的类只有4个字段: class List: Object { dynamic var name = "" dynamic var date = "" dynamic var notes = "" dynamic var info = "" } 我想再添加两个: dynamic var website = "" dynamic var telephone = "" 如果我将这些字段添加到类中,则由于新字段,Realm会给我一个错误。如何在保存所有用户数据的同时

我的类只有4个字段:

class List: Object {
    dynamic var name = ""
    dynamic var date = ""
    dynamic var notes = ""
    dynamic var info = ""
}
我想再添加两个:

dynamic var website = ""
dynamic var telephone = ""

如果我将这些字段添加到类中,则由于新字段,Realm会给我一个错误。如何在保存所有用户数据的同时更新此类?

有两种选择需要考虑:

  • 如果您的应用正在开发中,尚未发布,则可以删除已安装的应用并重新安装。Realm将在重新创建数据库时使用更新的模型类架构

  • 如果您的应用程序已经发布,或者您希望保留领域文件中的数据,您可以将现有领域优雅地升级到新架构。您可以通过执行此操作,它指示Realm更新磁盘上文件的架构以匹配应用程序中的模型类,并使您有机会对Realm文件中的数据执行任何可能需要的修改,以适应模型类中的更改


  • 当Realm使用您的模型创建内部结构时,就会发生这种情况。每次需要更改模型时(经常发生),都需要将当前模型迁移到新模型

    方法是:

  • 对数据模型进行任何更改
  • 将此添加到应用程序(应用程序:didFinishLaunchingWithOptions:)中的应用程序委派中

    let config = Realm.Configuration(
    
       schemaVersion: 1,  //Increment this each time your schema changes
        migrationBlock: { migration, oldSchemaVersion in
    
          if (oldSchemaVersion < 1) {
                //If you need to transfer any data 
               //(in your case you don't right now) you will transfer here                                                                 
    
          }
       })
    
    Realm.Configuration.defaultConfiguration = config
    
    let realm = try! Realm()
    
    let config=Realm.Configuration(
    schemaversation:1,//每次更改模式时都增加这个值
    migrationBlock:{migration,oldSchemaVersion in
    if(oldschemaversation<1){
    //如果您需要传输任何数据
    //(在你的情况下,你现在不知道)你将在这里转车
    }
    })
    Realm.Configuration.defaultConfiguration=config
    让我试试!领域()
    
  • 现在,每次更改模式时,只需在schemaVersion中添加一个即可。当然,迁移可能会更复杂,但对于您的模型来说,这就足够了

  • 有关更多信息,请参阅