我将字段从链接对象移动到非计算字段
public dynamic var venue: Venue!
现在我需要创建一个迁移来填充此字段,然后使用linkedobjects
我的迁移就像这样
if (oldSchemaVersion < 7) {
migration.enumerate(VenueRoom.className()) { oldObject, newObject in
let venue = try! Realm().objects(Venue).filter("ANY venueRooms.id = %@", oldObject!["id"]!).first
newObject!["venue"] = venue
}
}
但它不能处理以下错误
&#34;提供的架构版本0小于上次设置的版本6。&#34; UserInfo = {NSLocalizedDescription =提供的架构版本0小于上次设置的版本6.}:
什么似乎有意义
然后我尝试以下方法来获取具有正确配置的域实例
if (oldSchemaVersion < 7) {
migration.enumerate(VenueRoom.className()) { oldObject, newObject in
let configuration = Realm.Configuration(
schemaVersion: self.schemaVersion,
migrationBlock: nil
)
let realm = try! Realm(configuration: configuration)
let venue = realm.objects(Venue).filter("ANY venueRooms.id = %@", oldObject!["id"]!).first
newObject!["venue"] = venue
}
}
但它被卡在了
let realm = try! Realm(configuration: configuration)
它永远不会从那个陈述中回来,没有错误。
在迁移中执行查询的正确方法是什么?
答案 0 :(得分:0)
在迁移块中执行查询是not currently supported。在添加支持之前,您将要使用Migration.enumerate(_:_:)
枚举给定类型的对象并执行Swift中所需的任何过滤。