我们有一些来自[String: Any]
的{{1}}字典和[[String: Any]]
数组,我们希望将其设为Realm Object
models的类实例(假设为JSONSerialization.jsonObject()
以下示例)。根据Realm文档,我们需要设计具有以下属性的模型:
PersonModel
class PersonModel : Object {
dynamic var id = ""
dynamic var name = ""
dynamic var imagePath: String?
let friends = List<PersonModel>()
let movies = List<MovieModel>()
}
,因为有时数据无效。Person?
不会抛出并且永远不会返回nil,这意味着它似乎无法处理无效数据。假设我们有这个Realm.create(_:value:update:)
字典数组:
[[String:Any]]
期望的结果是:
[["userid": "u1",
"username": "bob",
"image": "http://example.com/bob.jpg",
"friendIds": ["u2", "u3"],
"movieIds": ["sw4", "sw5", "sw6", "ro"]],
["userid": "u2",
"username": "max",
"image": "http://example.com/max.jpg",
"friendIds": ["u1", "u3"],
"movieIds": ["sw4", "sw5", "sw6", "sw7"]],
["userid": "u3",
"username": false],
]
且朋友为"bob"
的PersonModel实例。List(max)
且朋友为"max"
的PersonModel实例。但对我们来说,我们应该如何通过RealmSwift实现这些条件并不明显。我们没有看到如何编写代码来解决不可错的构造函数List(bob)
。我们没有看到第三方JSON映射器(如lyft/mapper或JohnSundell/Unbox)如何将给定的非适当Realm.create(_:value:update:)
过滤/转换为[[String:Any]]
与RealmSwift [[String:Any]]
方法兼容。
答案 0 :(得分:0)
来自Realm的Katsumi。我们建议使用第三方映射库将JSON绑定到Realm模型。我认为ObjectMapper https://github.com/Hearst-DD/ObjectMapper提供了可用的初始化程序来验证映射过程中的JSON结构。这个答案适合你吗?