我使用领域缓存的时间不长,并且不需要随时更新模式版本或迁移到数据模型中。
因此,与其在数据模型发生变化时崩溃,我的应用程序如何聪明地处理这种差异,消除默认领域并从头开始呢?
提前感谢!
发布于 2016-02-18 18:14:52
自从斯威夫特2推出“尝试/捕捉”以来,我一直觉得这很有魅力。我只是在启动时从我的应用程序代表打电话给testRealmFile(),之后一切都很好。
func testRealmFile(){
do {
try Realm().objects(Model1)
try Realm().objects(Model2)
} catch {
print("can't access realm, migration needed")
deleteRealmFile()
}
}
func deleteRealmFile(){
if let path = Realm.Configuration.defaultConfiguration.path {
do{
try NSFileManager.defaultManager().removeItemAtPath(path)
print("realm file deleted")
} catch {
print("no realm file to delete")
}
}
}发布于 2017-01-04 19:54:12
领域配置对象现在有一个名为deleteRealmIfMigrationNeeded的属性(在目标C中也可用),如果设置为true,将自动删除需要迁移的领域数据库文件。
注意,如果您有兴趣在删除数据库文件之前检查是否需要迁移(例如,如果您希望在删除之前得到用户确认),您可能需要一些其他方法。
发布于 2015-05-20 04:24:34
最简单的方法是检查Realm.schemaVersionAtPath(_:)并查看该模式版本是否低于当前模式版本。您还可以遵循https://github.com/realm/realm-cocoa/issues/1692,它建议添加一个更精确的API (不需要颠簸模式版本),允许您检测是否需要迁移。
https://stackoverflow.com/questions/30333959
复制相似问题