Swift Realm Property'*';已添加到最新的对象模型迁移中

Swift Realm Property'*';已添加到最新的对象模型迁移中,swift,migration,realm,Swift,Migration,Realm,我已将新的数组属性添加到RLMObject和 public class Student: RLMObject { dynamic var id = 0 dynamic var name = "" dynamic var resultList = RLMArray(objectClassName:Result.className()) } public class Result: RLMObject { } 错误日志: 由于以下原因,对象类型“Student”需要迁移

我已将新的数组属性添加到RLMObject和

public class Student: RLMObject {
    dynamic var id = 0
    dynamic var name = ""
    dynamic var resultList = RLMArray(objectClassName:Result.className())
}

public class Result: RLMObject {
}
错误日志:

由于以下原因,对象类型“Student”需要迁移 错误: -属性“resultList”已添加到最新的对象模型中

尝试失败:

let configuration:RLMRealmConfiguration = RLMRealmConfiguration.defaultConfiguration()

migration.enumerateObjects(Student.className()) { oldObject, newObject in
    newObject!["resultList"] = RLMArray(objectClassName: Result.className())
}
编辑:


您必须增加您的
schemaVersion
,并在
RLMRealmConfiguration
上提供一个
migrationBlock
。在那里您可以迁移表。但在你的特殊情况下你不需要这样。属性的添加可以自动处理。你仍然需要一个空的街区

let config = RLMRealmConfiguration.defaultConfiguration()
config.schemaVersion = 1
config.migrationBlock = { (migration, oldSchemaVersion) in
    // nothing to do
}
RLMRealmConfiguration.setDefaultConfiguration(config)

您似乎使用了相当旧的Realm版本?迁移对象从何而来?您是否对配置进行了任何更改?@marius更新了我的完整代码谢谢@marius,已编辑为我的完整代码。。你能告诉我错误的答案吗?请注意,下一个模式更改仅仅将schemaversation增加1是不够的。它必须高于数据库中存储的版本,因此在其中存储一个绝对值可能是有意义的。如果您仍在开发中,您可能希望重置模拟器的内容和设置/删除您的应用程序并从头开始。如果您只需要担心实际部署的模式版本之间的迁移,这将使整个过程变得更加容易。
configuration.schemaVersion += 1
let config = RLMRealmConfiguration.defaultConfiguration()
config.schemaVersion = 1
config.migrationBlock = { (migration, oldSchemaVersion) in
    // nothing to do
}
RLMRealmConfiguration.setDefaultConfiguration(config)