Ios 用Swift解包Yahoo-API

Ios 用Swift解包Yahoo-API,ios,json,swift,Ios,Json,Swift,我正试图以JSON格式从Yahoo finance API获取价格和更改数据 但是,在展开数据时存在一些问题。程序在resultArray中为jsonObjectString执行时显示问题。我怀疑它找不到数据,因为调试期间的错误是致命错误:在展开可选值时意外发现nil func GetPrice(){ let session = NSURLSession.sharedSession() let request = NSMutableURLRequest(URL: NSURL(st

我正试图以JSON格式从Yahoo finance API获取
价格
更改
数据

但是,在展开数据时存在一些问题。程序在resultArray中为jsonObjectString执行
时显示问题。我怀疑它找不到数据,因为调试期间的错误是
致命错误:在展开可选值时意外发现nil

func GetPrice(){
    let session = NSURLSession.sharedSession()
    let request = NSMutableURLRequest(URL: NSURL(string: "https://query.yahooapis.com/v1/public/yql?q=select%20price%2C%20change%20from%20csv%20where%20url%3D'http%3A%2F%2Fdownload.finance.yahoo.com%2Fd%2Fquotes.csv%3Fs%3DA17U.SI%26f%3Dsl1d1t1c1ohgv%26e%3D.csv'%20and%20columns%3D'symbol%2Cprice%2Cdate%2Ctime%2Cchange%2Ccol1%2Chigh%2Clow%2Ccol2'&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys")!)
    request.HTTPMethod = "GET"

    let task = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in

        if let error = error {
            print(error)
        }
        if let data = data{
            do{
                let resultJSON = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions())
                let resultArray = resultJSON as? NSArray
                for jsonObjectString in resultArray!{
                    let price = jsonObjectString["price"] as! String
                    let change = jsonObjectString["change"] as! String
                    self.priceList.append(PriceTable(stockCode: self.blueChipList[self.index].stockName, price: price, change: change))
                }
                dispatch_async(dispatch_get_main_queue(), {self.tableView.reloadData()})

            }catch _{
                print("Received not-well-formatted JSON")
            }

        }
        if let response = response {
            let httpResponse = response as! NSHTTPURLResponse
            print("response code = \(httpResponse.statusCode)")
        }
    })
    task.resume()
}

resultJSON是dictionary,这就是为什么当您将它强制转换到
NSArray
时它会返回nil

如果你想得到价格和变化的价值,试试这个

let resultDict = resultJSON as? NSDictionary
let queryDict = resultDict["query"]
let resultsDict = queryDict["results"]
let rowDict = resultsDict["row"]
let price = rowDict["price"] as! String
let change = rowDict["change"] as! String