gpt4 book ai didi

swift - 通过 Swift 映射将 Realm 对象映射到 Dict

转载 作者:行者123 更新时间:2023-11-28 08:24:00 25 4
gpt4 key购买 nike

我有两个像这样的 (Realm.io) 对象:

class Parent: Object {
var title = “”
var children = List<Child>()

var dict: [String: Any] {
print(“Dict 1”)
return ([“title”: self.title, “children”: self.children.map{ $0.dict }])
}
}

class Child: Object {
var name = “”

var dict: [String: Any] {
print(“Dict 2”)
return ([“name”: self.name])
}
}

我正在尝试像这样一口气将它们都转换为字典:

let parent_dict = parent.dict

它适用于“title”和其他类似的 Parent 属性,但实际上从未映射到 Child 类对象。

上面例子的输出只是:Dict 1

最佳答案

请务必先将所有对象添加到 Realm 。以下代码有效(在您的项目中的 Playground 中尝试):

import RealmSwift

class Parent: Object {
dynamic var title = ""
var children = List<Child>()

var dict: [String: Any] {
print("Dict 1")
return (["title": self.title, "children": self.children.map{ $0.dict }])
}
}

class Child: Object {
dynamic var name = ""

var dict: [String: Any] {
print("Dict 2")
return (["name": self.name])
}
}

let p1 = Parent(); p1.title = "John"
let c1 = Child(); c1.name = "Pam"
let c2 = Child(); c2.name = "Andrew"
let c3 = Child(); c3.name = "Barrack"

let realm = try! Realm()
try! realm.write {
realm.add(p1)
realm.add([c1, c2, c3])

p1.children.append(objectsIn: [c1, c2, c3])
}

print(p1.dict)

运行代码后,控制台将显示:

Dict 1
["title": "John", "children": Swift.LazyMapRandomAccessCollection<RealmSwift.List<Child>, Swift.Dictionary<Swift.String, Any>>(_base: List<Child> (
[0] Child {
name = Pam;
},
[1] Child {
name = Andrew;
},
[2] Child {
name = Barrack;
}
), _transform: (Function))]

关于swift - 通过 Swift 映射将 Realm 对象映射到 Dict,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40565585/

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