gpt4 book ai didi

ios - 如何在 Realm 迁移中执行查询?

转载 作者:行者123 更新时间:2023-11-28 08:42:52 27 4
gpt4 key购买 nike

我正在将一个字段从链接对象移动到一个非计算字段

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
}
}

但它不起作用,出现以下错误

"Provided schema version 0 is less than last set version 6." UserInfo={NSLocalizedDescription=Provided schema version 0 is less than last set version 6.}:

似乎有道理

然后我尝试以下方法来获取具有正确配置的 Realm 实例

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)

它永远不会从该语句返回,没有错误。

在迁移中执行查询的正确方法是什么?

最佳答案

在迁移 block 中执行查询是 not currently supported .在添加支持之前,您需要使用 Migration.enumerate(_:_:) 枚举给定类型的对象并在 Swift 中执行您需要的任何过滤。

关于ios - 如何在 Realm 迁移中执行查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36016480/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com