使用 ObjectMapper( https://github.com/Hearst-DD/ObjectMapper ),我正在将 JSON
转换为 Swift
对象。应用程序在访问 user.profession
时崩溃。
基本上,我不知道如何解析模型中具有相同 JSON 映射根节点的另一个可映射对象,我想,我做错了。我在任何地方都找不到相同的文档。
JSON 字典:
user: {
"name": "Dinesh",
"url": "https://dinaraja.me",
"company": "IIINC",
"designation": "Developer"
}
型号:
struct User: Mappable {
var name: String!
var url: URL!
var profession: Profession!
init(_ map: Map) {
name <- map["name"]
url <- map["url"]
profession <- map // FIXME: It's not working. Find out what we do here is right/wrong
}
}
struct Profession: Mappable {
var company: String!
var designation: String!
init(_ map: Map) {
company <- map["company"]
designation <- map["designation"]
}
}
我做了什么:
let user = Mapper<User>().map(myJSONDictionary)
print(user.profession.company) //FIXME: Crashes here
如有任何帮助,我们将不胜感激。
最佳答案
自 profession
其模型未直接包含在 user
中json 模型你不应该使用对象映射器 <-
运营商在这种情况下。相反,您应该初始化新的 Profession
直接来自 user
的对象映射函数
struct User: Mappable {
var name: String!
var url: URL!
var profession: Profession!
init(map: Map) {
}
mutating func mapping(map: Map) {
name <- map["name"]
url <- map["url"]
profession = Profession(map: map)
}
}
struct Profession: Mappable {
var company: String!
var designation: String!
init(map: Map) {
company <- map["company"]
designation <- map["designation"]
}
mutating func mapping(map: Map) {
company <- map["company"]
designation <- map["designation"]
}
}
关于ios - 从根节点映射嵌套对象不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44646620/