测试领域,无法向我的测试类添加新属性。遵循了文档,并在此处给出了一些答案,但两者均无法正常工作。在我的代码中,即使使用更新的领域,迁移的“普通”空默认块也不起作用。
遇到此错误
线程1:致命错误:“尝试!”表达式意外引发错误:Error Domain = io.realm Code = 10“由于以下错误,需要迁移: -已添加属性'ComicType.creationDate'。“ UserInfo = {NSLocalizedDescription =由于以下错误,需要迁移: -已添加属性“ ComicType.creationDate”。,错误代码= 10}
似乎我没有更改schemaVersion,但在“基本”迁移块中做了。我使用以下命令在应用程序委托中检查架构版本:
df.write.option("truncate", "true").jdbc(url=DATABASE_URL, table=DATABASE_TABLE, mode="overwrite", properties=DATABASE_PROPERTIES)
我的AppDelegate:
let configCheck = Realm.Configuration();
do {
let fileUrlIs = try schemaVersionAtURL(configCheck.fileURL!)
print("schema version \(fileUrlIs)")
} catch {
print(error)
}
我的班级:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
let config = Realm.Configuration(schemaVersion: 1, migrationBlock: { migration, oldSchemaVersion in
if (oldSchemaVersion < 1) {
}
})
Realm.Configuration.defaultConfiguration = config
_ = try! Realm()
return true
}
答案 0 :(得分:1)
问题是通过这种方式解决的:真正的问题不在于模式编号,而是关于根本不调用迁移代码,我意识到迁移模式始终保持不变。真正的错误是在我的视图控制器中调用let realm = try! Realm()
并将其用作全局常量。现在使用lazy var realm = try! Realm()
找到了here的帮助。现在,在模型中进行每次更改之后,我都在appDelegate中更新了schemaVersion。
答案 1 :(得分:0)
我遇到了类似的问题,我的错误堆栈跟踪是这样开始的:
`fatal error: 'try!' expression unexpectedly raised an error: Error Domain=io.realm Code=10 "Migration is required due to the following errors:
显示的错误只是确认某些对象已保存在本地。因此,没有任何原因可以导致问题。
我发现的问题是,由于我更新了本地保存的对象类,因此违反了Realm数据库的架构。因此,它要求我更新架构。
我想在删除应用程序并再次运行时会创建一个新的Realm文件。如果是这样,那么将创建一个与最新代码一起使用的新架构