这是我的代码。
func connectionDidFinishLoading(connection: NSURLConnection){
var err: NSError
var jsonResult: NSDictionary = NSJSONSerialization.JSONObjectWithData(responseData, options: NSJSONReadingOptions.MutableContainers, error: nil) as! NSDictionary
if jsonResult.count>0 && jsonResult["results"]!.count>0 {
var result: NSArray = jsonResult["results"] as! NSArray
println("\(result)")
var dict = NSDictionary()
var myDict = NSDictionary()
for dict in result {
let googleGeo = dict["geometry"] as! NSDictionary
let googleLoc = googleGeo["location"] as! NSDictionary
let latitude = googleLoc["lat"] as! Float
let longitude = googleLoc["lng"] as! Float
let googleicon = dict.valueForKey("icon") as? NSString
let googlename = dict["name"] as? NSString
let googlevicinity = dict["vicinity"] as? NSString
myDict.setValue(latitude, forKey: "lat"
}
}
}
从Google Places API解析后,我收到了经度,纬度,名称,附近,图标。现在我想将这些值附加到myDctionary,以便我可以将值传递给数组并传递给下一个视图控制器。
有人让我知道要这样做吗?
答案 0 :(得分:2)
我的朋友,你应该试试这个。
让字典确切地知道您希望它保持哪种类型的键/值对。你想使用" String"作为键,因为你的值有不同的数据类型你想要使用" AnyObject"作为价值。
UPDATE 对于Swift 2,您将使用String:AnyObject,但对于Swift3,您将使用String:Any。我已经更新了代码以显示Swift 3版本。
//this says your dictionary will accept key value pairs as String/Any
var myDict = [String:Any]()
您使用Any因为您有许多不同的数据类型
//Your values have are being cast as NSDictionary, Float, and NSStrings. All different datatypes
let googleGeo = dict["geometry"] as? NSDictionary
let googleLoc = googleGeo["location"] as? NSDictionary
let latitude = googleLoc["lat"] as? Float
let longitude = googleLoc["lng"] as? Float
let googleicon = dict.valueForKey("icon") as? NSString
let googlename = dict["name"] as? NSString
let googlevicinity = dict["vicinity"] as? NSString
现在使用方法.updateValue(value:Value,forKey:Hashable)来设置键和值
//update the dictionary with the new values with value-type Any and key-type String
myDict.updateValue(googleGeo, forKey: "geometry")
myDict.updateValue(googleLoc, forKey: "location")
myDict.updateValue(latitude, forKey: "lat")
myDict.updateValue(longitude, forKey: "lng")
myDict.updateValue(googleicon, forKey: "icon")
myDict.updateValue(googlename, forKey: "name")
myDict.updateValue(googlevicinity, forKey: "vicinity")
myDict现在应该拥有所有这些键/值对,并使用键提取值,然后使用它们执行所需的操作。顺便说一下,我只使用了那些关键名称,因为对于你的帖子来说,它似乎是你正在使用的惯例。您可以根据需要为键命名。但无论你如何命名,它们都必须与你用来提取价值的名称相同。
希望这有帮助!