2017-01-10 8 views
-1

我variavle d後未分配將返回nil變量,因爲你想<code>print(d)</code>外完成塊的網絡呼叫

var d: Int! 

Alamofire.request(mapsUrl).responseJSON(completionHandler: { (response) in 
     let jsonObject = JSON(response.result.value) 
     let value = jsonObject["rows"][0]["elements"][0]["distance"]["value"].int 

     var converted = 0 
     if value! <= 5000{ 
      converted = (value!/1000) * 80 
     }else{ 
      converted = (value!/1000) * 65 
     } 
     if converted < 400{ 
      converted = 400 
     }else if converted == 0{ 
      converted = 400 
     } 
     d = converted 
    }) 
print(d) 

d將返回零

+1

請看看在Alamofire README其中明確規定,所有的請求都處理*異步* –

回答

1

,該聲明將之前執行您的網絡請求已完成。嘗試把該完成塊內:

Alamofire.request(mapsUrl).responseJSON(completionHandler: { (response) in 
    let jsonObject = JSON(response.result.value) 
    let value = jsonObject["rows"][0]["elements"][0]["distance"]["value"].int 

    var converted = 0 
    if value! <= 5000{ 
     converted = (value!/1000) * 80 
    }else{ 
     converted = (value!/1000) * 65 
    } 
    if converted < 400{ 
     converted = 400 
    }else if converted == 0{ 
     converted = 400 
    } 
    d = converted 
    print(d) 
}) 
+0

我想在函數返回'D' –

+0

見@馬丁的r評論。我建議你閱讀異步編程 – toddg

相關問題