私はfuncから返すことができるように、私のforループの値と等しい戻り値を設定したいと思います。それをどうやって行うのか考えていますか?戻り値forループの文字列 - Swift 3
static func getStones() -> Double {
let url = NSURL(string: "MYURL")
let request = NSMutableURLRequest(url: url as URL!)
var stonesNew = Double()
let task = URLSession.shared.dataTask(with: request as URLRequest) { data, response, error in
let responseString = try! JSONSerialization.jsonObject(with: data!, options: .allowFragments) as! NSDictionary
let contacts = responseString["Sheet1"] as? [AnyObject]
for contact in contacts!{
let stones = contact["stones"] as! Double
stonesNew = stones
}
}
task.resume()
return stonesNew
}
- だから、私はダウンロードした「石」を「stonesNew」に設定したいと思いますが、それは常に石= 0
トムuがstonesNewに石の値を設定することを意味しましたの? – Anuraj
石の合計を返したいですか?常にゼロを返します。 – ChanWarde
'task.resume()'はタスクを開始してから戻ります。だからそれが終わり、あなたが 'stoneNew'を返すとき、その仕事はまだ完了していません。このようにしなければならない場合は、結果がサーバーから返されるのを待つためにセマフォーを使用する必要があります。 より良いアプローチは、結果が返されたときに呼び出すためにこの関数にハンドラを渡すことです。 –