我只是测试一些使用Realm的配置,因此我添加并删除了领域类中的变量和列表。由于我只是在测试,我不想通过迁移过程 - 我也没有任何影响连续性的数据。如何避免RealmSwift中的迁移
有没有什么办法可以解决由Realm自动请求的迁移?
我只是测试一些使用Realm的配置,因此我添加并删除了领域类中的变量和列表。由于我只是在测试,我不想通过迁移过程 - 我也没有任何影响连续性的数据。如何避免RealmSwift中的迁移
有没有什么办法可以解决由Realm自动请求的迁移?
无论是否更改模式,有两种方法可以跳过迁移错误。
使用deleteRealmIfMigrationNeeded
财产。如果是true
,如果需要迁移,则使用提供的模式重新创建Realm文件。
let config = Realm.Configuration(deleteRealmIfMigrationNeeded: true)
Realm.Configuration.defaultConfiguration = config
let realm = try! Realm()
...
递增架构版本每次启动。 Realm具有自动迁移功能。如果您不需要迁移现有数据,则只需增加模式版本即可。架构将被Realm自动更改。
let config = Realm.Configuration(schemaVersion: try! schemaVersionAtURL(Realm.Configuration.defaultConfiguration.fileURL!) + 1)
Realm.Configuration.defaultConfiguration = config
let realm = try! Realm()
...
在夫特3
迁移领域可容易地通过将该代码内侧AppDelegate类 “didFinishLaunchingWithOptions” 方法避免。
var config = Realm.Configuration()
config.deleteRealmIfMigrationNeeded = true
Realm.Configuration.defaultConfiguration = config
这如果迁移需要有新的安装程序将删除境界数据库。
斯威夫特4
var config = Realm.Configuration()
config.deleteRealmIfMigrationNeeded = true
Realm.Configuration.defaultConfiguration = config
伟大的东西。我让realm = try! Realm()在viewDidLoad之前定义。在应用程序崩溃之前,我可以在哪里将您的建议代码进行工作,因为它遇到了领域定义? – kangarooChris
我们建议将代码放在AppDelegate的'didFinishLaunchingWithOptions'中。如果你把'let realm = try! Realm()'作为ViewController的成员变量,在'didFinishLaunchingWithOptions'之前调用。所以它应该是'lazy var realm = try! Realm()' –
我测试了两种解决方案,并且都在工作。万分感谢。 – kangarooChris