作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在将一个字段从链接对象移动到一个非计算字段
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/
我是一名优秀的程序员,十分优秀!