当前位置 : 主页 > 手机开发 > 其它 >

使用Swift从AFNetworking访问JSON数据

来源:互联网 收集:自由互联 发布时间:2021-06-11
我通过代码中的链接访问了Yahoo Finance数据集.它在调试窗口中执行并打印 JSON数据.如何在myNameLabel中存储然后打印选定的字段.例如“symbol”或“LastTradePriceOnly”字段? class ViewController:
我通过代码中的链接访问了Yahoo Finance数据集.它在调试窗口中执行并打印 JSON数据.如何在myNameLabel中存储然后打印选定的字段.例如“symbol”或“LastTradePriceOnly”字段?

class ViewController: UIViewController {


    @IBOutlet weak var myNameLabel: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        let manager = AFHTTPRequestOperationManager()

        manager.GET( "https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quote%20where%20symbol%20in%20(%22AAPL%22)&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=",
            parameters: nil,
            success: { (operation: AFHTTPRequestOperation!,responseObject: AnyObject!) in
                println("JSON: " + responseObject.description)

                //How to access and print individual fields?

            },
            failure: { (operation: AFHTTPRequestOperation!,error: NSError!) in
                println("Error: " + error.localizedDescription)
            })
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}
您可以只导航嵌套字典的结构,可能是这样的:

manager.GET( "https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quote%20where%20symbol%20in%20(%22AAPL%22)&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=",
    parameters: nil,
    success: {
        operation, responseObject in

        if let quote = responseObject?.objectForKey("query")?.objectForKey("results")?.objectForKey("quote") as? NSDictionary {

            let symbol = quote.objectForKey("Symbol") as? String
            let lastTradePriceOnly = quote.objectForKey("LastTradePriceOnly") as? String

            println("results: \(symbol) @ \(lastTradePriceOnly)")
        } else {
            println("no quote")
        }
    },
    failure: {
        operation, error in

        println("Error: " + error.localizedDescription)
    })
网友评论