鑑於http://jsonplaceholder.typicode.com/users過濾用斯威夫特的地圖API和Objective-C的valueForKeyPath
爲了簡單起見這裏JSON對象是JSON的刪節版
var userDict: [[String, String]]? <-- String json converts into foundation and saved here
// The Json
[{
"address" : {
"geo" : {
"lat" : "-37.3159"
}
}
}]
我想獲得的緯度數組是地址的地理點的緯度。我有兩個選擇,迅速或Objective-C的
我可以得到一個數組LAT使用舊valueForKeyPath:方法
var keypathLatitude: [String] = (userDict! as NSArray).valueForKeyPath("address.geo.lat") as! [String] // Objective-c api
這將使我[「-37.3159」]這是一個數組元件。 但我有困難與SWIFT的地圖API
var mapLatitude: [String] = userDict!.map({$0["address"]?["geo"]["lat"] as! String}) // <-- Does not like this. But I want ["-37.3159"] as a result.
UPDATE
var mapLatitude: [String] = userDict!.map({$0["address"]?["geo"]??["lat"] as! String})
做它用mattdaw的建議我增加了一個 '?'。它不起作用。奇怪的是,當我添加'??'它似乎按需要工作。 .... 但爲什麼? '??'是零合併運營商是不是?
順便說一句,我這樣做是遊樂場
我更新了我的答案,使用'?'運營商。 map({$ 0 [「address」]?[「geo」]?[「lat」]不起作用,但是這樣做:map({$ 0 [「address」]?[「geo」] ?? [「lat」 ]這個SwiftyJson看起來非常整齊! – DerrickHo328