我已經搜索瞭如何做到這一點,但是對我而言,某些事情沒有意義,我無法做到。我需要做的就是從我的json會話中獲取數據(如果這就是你所說的)。我約3周前開始編程,所以我需要非專業術語。我意識到這可能會被標記爲重複,但這個/相關主題上的大部分答案都是針對其他語言的,我很快就不瞭解它們,所以它們對我沒有多大幫助。從json會話返回的值在會話之外使用
我花了幾個小時試圖找到答案,因爲我是新的,我不知道我正在尋找什麼,甚至是正確的事情要搜索。我也嘗試閱讀iOS開發者庫,但是我不明白它告訴我什麼,或者我沒有找到正確的部分,因爲我仍然無法弄清楚。請嘗試解釋這一點,而不是發送給我閱讀其他資源。
這裏是我的功能
func parseData() {
let urlString = "http://heroesjson.com/heroes.json"
let session = NSURLSession.sharedSession()
let url = NSURL(string: urlString)!
session.dataTaskWithURL(url) { (data: NSData?, response:NSURLResponse?, error: NSError?) -> Void in
guard let responseData = data else { return }
var json: [[String: AnyObject]]!
do {
json = try NSJSONSerialization.JSONObjectWithData(responseData, options: NSJSONReadingOptions.AllowFragments) as! [[String: AnyObject]]
}
catch {
//handle error
}
var arrayToReturn = [Hero]()
for element in json {
let hero = Hero(fromDictionary: element as! [String: AnyObject])
arrayToReturn.append(hero)
}
}.resume()//Closes Session.dataTaskWithURL
} //Closes parseData()
的目標是讓json的變量在我做發言,所以我可以解析它的功能之外,或讓我的「arrayToReturn」這樣我就可以把它保存到全球我使用的變量。
如果我理解正確,我不能只將值(arrayToReturn)賦值給我的全局變量(英雄),因爲這是一個異步請求,所以它只返回nil,因爲在請求完成之前調用該命令。我想我必須使用完成處理程序或回調函數。我真的不明白他們之間的區別,不明白如何或其中來執行它們。
另外,我也不太瞭解這個代碼,我只是知道有必要得到我想要的。
session.dataTaskWithURL(url) { (data: NSData?, response:NSURLResponse?, error: NSError?) -> Void in
「(數據:NSData的?迴應:NSURLResponse?錯誤:NSError)」的模樣參數,但他們似乎沒有被連接到一個函數,這樣沒有意義對我
「 - >無效」對我來說沒有意義,因爲 - >表示返回任何後面的東西,但是無效表示它沒有返回,所以爲什麼不把它們全部放在一起呢? 「
」 - >虛假in「這裏的意義是什麼?這是什麼意思/信號?
我整節今天早些時候讀了,我還是不明白怎麼做我要問什麼......這就是爲什麼我使出在這裏問。如果你可以更具體地說明哪一部分可能有幫助。 – Apple
我編輯了我的回覆,也許現在有意義。如果有幫助,請確保將其標記爲最佳答案。謝謝。 – itsProf
謝謝!我編輯了我的代碼,它的工作原理。我只需要知道如何在程序開始之前運行這段代碼,然後纔開始執行它,因爲程序需要從此json解析中填充的所有數據 – Apple