【发布时间】:2020-01-06 19:40:40
【问题描述】:
我正在尝试访问迁移块中的 List<String> 属性。
我的数据库对象如下所示:
@objcMembers
public class Foo: Object {
let bar: List<String> = .init()
}
在我的迁移块中,我尝试访问 bar,但似乎无法正确访问:
static func migrateFoo(_ migration: RealmSwift.Migration) {
migration.enumerateObjects(ofType: Foo.className()) { old, _ in
let test = old?["bar"] as? List<String>
let test2 = old?["bar"] as? [String]
let test3 = old?["bar"]
}
}
test 和 test2 都是 nil。 test3 的输出显示如下:
(lldb) po test3
▿ Optional<Any>
- some : List<string> <0x600001fb5f80> (
[0] someContent
)
我需要将test3 投射到什么位置才能访问该列表?
编辑
我想访问bar 属性中的元素,因此我认为将迁移对象的bar 属性转换为List<String>,毕竟这是数据类型就足够了。最后我想要的是这样的:
for element in test {
print(element) // `element` should be a `String` here
}
【问题讨论】:
-
这可能源于原语是 Realm 中的二等公民...如果可能,请尝试使用 String 属性创建一个包装类。
-
@OscarApeland 这也许是可能的。不幸的是,更改
bar的类型会导致很多其他问题:/
标签: ios swift realm realm-migration