如何将字段添加到Realm模型类

Vla*_*vPG 2 realm swift

我班只有4个领域:

class List: Object {
    dynamic var name = ""
    dynamic var date = ""
    dynamic var notes = ""
    dynamic var info = ""
}
Run Code Online (Sandbox Code Playgroud)

我想再增加2个:

dynamic var website = ""
dynamic var telephone = ""
Run Code Online (Sandbox Code Playgroud)

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

Shr*_*ada 9

有两种选择可供考虑:

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

  2. 如果您的应用程序已经发布,或者您希望保留Realm文件中的数据,则可以将现有Realm正常升级到新架构.您可以通过执行迁移来执行此操作,该迁移指示Realm更新磁盘上文件的架构以匹配应用程序中的模型类,并使您有机会对Realm文件中的数据执行所需的任何修改.适应模型类中的更改.


Meh*_*hul 5

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

这样做的方法是:

  1. 对数据模型进行任何您想要的更改
  2. 将其添加到应用程序委托中的应用程序中(application: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()
    
    Run Code Online (Sandbox Code Playgroud)
  3. 现在,每次更改架构时,只需向 schemaVersion 添加一个即可。当然,迁移可能会比较棘手,但对于您的模型来说,这可以解决问题。

有关更多信息,请参阅Realm Swift 文档