如何避免RealmSwift中的迁移

如何避免RealmSwift中的迁移,swift,migration,realm,Swift,Migration,Realm,我只是在用Realm测试一些配置,因此我从Realm类中添加和删除了变量和列表。因为我只是在测试,所以我不想经历迁移过程-我也没有任何影响连续性的数据 有没有办法绕过域自动请求的迁移?有两种方法可以跳过迁移错误,而不考虑架构更改 使用deleteRealMifMigrationRequired属性。如果为true,则如果需要迁移,请使用提供的架构重新创建领域文件 let config = Realm.Configuration(deleteRealmIfMigrationNeeded: true

我只是在用Realm测试一些配置,因此我从Realm类中添加和删除了变量和列表。因为我只是在测试,所以我不想经历迁移过程-我也没有任何影响连续性的数据


有没有办法绕过域自动请求的迁移?

有两种方法可以跳过迁移错误,而不考虑架构更改

  • 使用
    deleteRealMifMigrationRequired
    属性。如果为
    true
    ,则如果需要迁移,请使用提供的架构重新创建领域文件

    let config = Realm.Configuration(deleteRealmIfMigrationNeeded: true)
    Realm.Configuration.defaultConfiguration = config
    
    let realm = try! Realm()
    ...
    
      

  • 每次启动时增加模式版本。Realm具有自动迁移功能。如果不需要迁移现有数据,只需增加模式版本即可。架构将由领域自动更改

    let config = Realm.Configuration(schemaVersion: try! schemaVersionAtURL(Realm.Configuration.defaultConfiguration.fileURL!) + 1)
    Realm.Configuration.defaultConfiguration = config
    
    let realm = try! Realm()
    ...
    

  • 在Swift 3中

    通过将此代码放在AppDelegate类中的“didFinishLaunchingWithOptions”方法中,可以轻松避免域中的迁移

    var config = Realm.Configuration()
    config.deleteRealmIfMigrationNeeded = true
    Realm.Configuration.defaultConfiguration = config
    

    如果新设置需要迁移,这将删除领域数据库。

    Swift 4

    var config = Realm.Configuration()
    config.deleteRealmIfMigrationNeeded = true
    Realm.Configuration.defaultConfiguration = config
    

    好东西。我让realm=试试!viewDidLoad之前定义的Realm()。在应用程序崩溃之前,我可以将建议的代码放在何处使其工作,因为它会命中领域定义?我们建议将代码放在AppDelegate中的
    didfishLaunchingwithoptions
    。如果你放
    让realm=试试!Realm()。所以它应该是
    lazy var realm=try!Realm()。太好了,谢谢。@MacOS上的kishikawakatsumi我改为lazy var并重新安装了应用程序,然后修改了模型,添加了几个字段并运行了应用程序。访问realm.objects()中的领域时,它在viewDidLoad中崩溃。我在AppDelegate didFinishLaunchingWithOptions中有自动迁移功能。还有什么不对?或者此解决方案仅适用于iOS?有没有关于领域和迁移的完整项目的好例子?如何从migrationBlock内部删除领域?因此,您可以选择删除数据的内容和时间。谢谢对我来说工作很有魅力!谢谢但是你会丢失数据吗?