gpt4 book ai didi

ios - ValueForKeyPath() 返回一些意想不到的东西

转载 作者:搜寻专家 更新时间:2023-10-31 08:05:29 25 4
gpt4 key购买 nike

我正在解析这个 json:

{
"destination_addresses" : [ "Göteborg, Sverige" ],
"origin_addresses" : [ "Stockholm, Sverige" ],
"rows" : [
{
"elements" : [
{
"distance" : {
"text" : "467 km",
"value" : 466568
},
"duration" : {
"text" : "4 timmar 34 min",
"value" : 16468
},
"status" : "OK"
}
]
}
],
"status" : "OK"
}

像这样进入 NSDictionary:

let dataDict = NSJSONSerialization.JSONObjectWithData(data.dataUsingEncoding(NSUTF8StringEncoding), options: nil, error: nil) as NSDictionary

let distance = dataDict.valueForKeyPath("rows.elements.distance.value")

现在,一切正常,没有崩溃或错误。但是,我希望它返回 466568 但它返回的是:

(
(
466568
)
)

我不知道为什么,我不能使用它,也不能将它转换成任何东西:(

还有另一个问题与此类似,但那里的答案对我没有帮助,因为我不是更改 json 的人,Google 才是。所以请不要讨厌。

最佳答案

valueForKeyPath 返回一个嵌套的 NSArray。你可能想投两次:

let distanceValue = ((distance as NSArray).objectAtIndex(0) as NSArray).objectAtIndex(0) as NSNumber
// or
let distanceValue = (distance as [NSArray])[0][0] as NSNumber

不能直接访问 distance 值,因为 valueForKeyPath 没有实现数组项的选择器。

没有valueForKeyPath:

let rows = dataDict.objectForKey("rows") as [NSDictionary]
let elements = rows[0]["elements"] as [NSDictionary]
let distance = elements[0]["distance"] as NSDictionary
let value = distance["value"] as NSNumber

关于ios - ValueForKeyPath() 返回一些意想不到的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25183011/

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