【发布时间】:2014-06-11 16:58:27
【问题描述】:
我有这个 Swift 代码:
func getData(completion: (array: Array<AnyObject>)->Void) {
UIApplication.sharedApplication().networkActivityIndicatorVisible = true
let session: NSURLSession = NSURLSession(configuration: sessionConfiguration)
var request: NSURLRequest = NSURLRequest(URL: NSURL(string: "http://coinabul.com/api.php"))
let task: NSURLSessionDataTask = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in
if !error {
let httpResp: NSHTTPURLResponse = response as NSHTTPURLResponse
if httpResp.statusCode == 200 {
var json: NSDictionary = self.convertDataToJSON(data)
var myArray: Array = Array<Currency>()
for (key: AnyObject, object: AnyObject) in json {
let info: NSDictionary = object as NSDictionary
let grams: CGFloat = info["Grams"] as CGFloat
let ounces: CGFloat = info["Ounces"] as CGFloat
let usd: CGFloat = info["USD"] as CGFloat
// Do something with those values
}
}
}
})
task.resume()
}
func convertDataToJSON(data: NSData) -> NSDictionary {
var error: NSError?
var jsonDictionary: NSDictionary = NSJSONSerialization.JSONObjectWithData(data, options: .MutableContainers, error: &error) as NSDictionary
return jsonDictionary
}
“json”NSDictionary 是正确的。如果我打印它:
{
BTC = {
Grams = "15.398340412292";
Ounces = "0.49506814017307";
SilverGrams = "1010.0959168583";
SilverOunces = "32.475337832916";
USD = "624.825500000000";
};
Gold = {
Grams = "0.06494206341493";
Ounces = "2.0199239627704";
USD = "1262.100000000000";
};
Silver = {
Grams = "0.0009900049917623401";
Ounces = "0.030792597293164";
USD = "19.240000000000";
};
}
我可以做json["Silver"],得到对应的对象。但是,如果我尝试执行 json["Silver"]["USD"],我的应用程序就会崩溃。
我在这里错过了什么?
【问题讨论】: