【发布时间】:2016-03-11 11:23:35
【问题描述】:
我已经实现了对服务器的 url 请求,并准备使用接收到的 JSON。 但是有一个奇怪的事情我无法解释。
我的 ViewController 类:
import UIKit
class TopRatedViewController: UIViewController {
var importedRates: NSArray = []
var successfullyConnected: Bool = true
@IBAction func buttonTapped(sender: AnyObject) {
print(importedRates)
}
override func viewDidLoad() {
super.viewDidLoad()
//MARK: Connection to web service
let urlString: String = "http://alma.com/get.php"
let url = NSURL(string: urlString)
let sessionConfig = NSURLSessionConfiguration.defaultSessionConfiguration()
let session = NSURLSession(configuration: sessionConfig)
let task = session.dataTaskWithURL(url!, completionHandler: { (data: NSData?, response: NSURLResponse?, error: NSError?) -> Void in
if error != nil {
self.successfullyConnected = false
}else {
var jsonresult = NSArray()
do {
jsonresult = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSArray
self.importedRates = jsonresult
} catch _ {
print("error loading rates")
}
}
})
task.resume()
print(importedRates)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
所以如果我运行我的应用程序 print(importedRates) 命令会打印空数组。在调试窗口中,我看到里面什么都没有。
但是。如果我单击应该打印此变量的按钮 - 它成功打印了一个包含 40 个元素的数组。 任何人都可以解释为什么它会这样工作吗?
我期待这个变量应该用 viewdidload 方法中的数据填充。
【问题讨论】:
标签: ios xcode swift nsurlrequest