var arrayLength:Int = 0 // is equal to 0
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let urlPath = "http://example.com/json"
let url = NSURL(string: urlPath)!
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithURL(url, completionHandler: {
data, response, error in
if (error? != nil) {
println(error)
} else {
var jsonResponse: AnyObject? = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil)
let json = JSON(jsonResponse!)
self.arrayLength = json["dump"].array?.count as Int!
println("Second: \(self.arrayLength)") // is equal to 3
for postIndex in 0...self.arrayLength-1 {
println(json["dump"][postIndex]["title"])
}
}
})
task.resume()
println(arrayLength) // is equal to 0 again
的我的代碼開始設置變量不發生變化外封
var arrayLength:Int = 0
。稍後在viewDidLoad()內部,我將其更改爲3.當我調用它時,在任務塊之外再次將它等於0.此處存在什麼問題以及我做錯了什麼?
您在完成異步任務之前正在打印它。換句話說,下載開始,但沒有完成 –