2017-06-04 75 views
-4

如何歸還你得到的?對不起,新手,我只理解。 enter image description hereSwiftyJSON Alamofire如何返回你得到的?

enter image description here

+1

您應該始終將您的代碼複製到您的問題中,而不是添加屏幕截圖。當我們需要重寫代碼時,它使得測試代碼變得很困難。 –

+0

您錯過了概念或詞彙/關鍵詞來對您的問題進行適當的搜索:「Async(or asynchrone)+ Swift + Closure」 – Larme

回答

0

Alamofire.request是一個異步任務,所以在此之後編寫任何代碼是最有可能會面前的任務完成執行。有幾種方法可以做你想做的事情,但由於你沒有提供太多的信息,我只是將JSON移到了閉包中。所以你應該得到一些東西打印出來。

Alamofire.request("https://...").responseJSON { (response) in 

    // Inside this closure is where you receive your JSON 

    if let value = response.value { 

     let json = JSON(value) 

     let title = json["posts", 3, "title"].stringValue 

     print("Title:", title) 
    } 
} 

// Any code after this request will most likely be executed before 
// the request has completed because it is done asynchronously. 

這是可能的工作更好地爲您的另一種方式。

我知道你是初學者,這些操作可能相當複雜。您需要了解代碼執行的順序以及變量的工作方式。您正在獲取該錯誤,因爲swiftyJsonVarviewDidLoad中的代碼無法訪問的塊中聲明。我建議你學習multi-threading和其他asynchronous任務,並可能學習如何正確地聲明和使用變量。

override func viewDidLoad() { 
    super.viewDidLoad() 

    load { (json) in 

     if let json = json { 

      let title = json["posts", 3, "title"].stringValue 

      print("Title:", title) 
     } 
    } 
} 

func load(completion: @escaping (JSON?) -> Void){ 

    Alamofire.request("https://httpbin.org/get").responseJSON { (response) in //https://... 

     var json: JSON? 

     if let value = response.value { 

      json = JSON(value) 
     } 

     completion(json) 
    } 
} 
+0

我很清楚。在我的問題中,我的意思是:如何處理json從Alamofire.request收到的事實。例如,它會寫錯誤(沒有看到變量): – Ivan

+0

'倍率FUNC viewDidLoad中(){ super.viewDidLoad() 負載() VAR oneTitle = swiftyJsonVar [ 「崗位」,3 「標題」]。 stringValue的 打印( 「名稱:」 + oneTitle) } FUNC負載(){ Alamofire.request( 「HTTPS:// GG」).responseJSON {(responseData) - >空隙中 如果((responseData .result.value)!=無){ let swiftyJsonVar = JSON(responseData.result.value!) } } }' – Ivan

+0

添加2張圖片以發佈我想要的內容。 – Ivan

相關問題