gpt4 book ai didi

ios - Realm 迁移中的访问列表属性

转载 作者:行者123 更新时间:2023-11-29 05:11:51 24 4
gpt4 key购买 nike

我正在尝试访问List<String>迁移 block 中的属性。

我的数据库对象如下所示:

@objcMembers
public class Foo: Object {
let bar: List<String> = .init()
}

在我的迁移 block 中,我尝试访问 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"]
}
}

两者testtest2niltest3的输出显示以下内容:

(lldb) po test3
▿ Optional<Any>
- some : List<string> <0x600001fb5f80> (
[0] someContent
)

我需要转换什么test3能够访问该列表吗?

编辑

我想访问 bar 中的元素属性,因此我认为转换迁移对象的 bar属性(property)List<String>毕竟,这是数据类型就足够了。最后我想要的是:

for element in test {
print(element) // `element` should be a `String` here
}

最佳答案

我不知道您想要做的事情的全部范围是什么,但问题的具体答案是:

let test = [ old!["bar"] ]

编辑

OP 添加了一些附加信息。目标是能够访问 bar List 属性中的值。下面是一些快速代码,它迭代该列表并将索引和对象(作为字符串)输出到控制台。

migration.enumerateObjects(ofType: Foo.className()) { oldItem, newItem in
let dynamicBarList = oldItem?.dynamicList("stringList")
if let list = dynamicBarList {
let myArray = list._rlmArray
let lastIndex = myArray.count - 1

for index in 0...lastIndex {
let object = myArray.object(at: index)
let value = "\(object)" //make the NSTaggedPointerString a String
print(index, value)
}
}
}

关于ios - Realm 迁移中的访问列表属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59618001/

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