次のように私は、JSON形式で映画のリストを取得する機能を持っている:Alamofireから受け取ったデータに変数の値を設定するにはどうすればよいですか?
var size: Int = 0
func getMovies() {
Alamofire.request(.GET, "https://api.themoviedb.org/3/discover/movie", parameters: ["sort_by" : "popularity", "api_key" : "secret api key"])
.validate()
.responseJSON { response in
switch response.result {
case .Success:
self.json = JSON(response.result.value!)
self.arraySize = self.json["results"].count
for num in 0...self.arraySize - 1 {
let x = self.json["results"][num]["popularity"]
self.movieArray.append(x.double!)
}
self.movieArray.sortInPlace()
for num in 0...self.arraySize - 1 {
let path = NSIndexPath(forRow: num, inSection: 0)
let cell = self.tableView.cellForRowAtIndexPath(path)
cell?.textLabel?.text = (self.findMovieByPopularity(self.movieArray[num]) + ": " + String(self.movieArray[num]))
}
size = self.json["results"].count
case .Failure(let error):
print(error)
}
}
}
case .Success:
の終わりに向かって、私は試してみて、私は関数の外で宣言された変数size
を設定し、長さにJSONの1つのプロパティのしかし、この変数をスイッチの外で使用すると、その値はまだ0です。
size
をプロパティの長さに設定することはできますが、それを関数外で使用することはできますか?
をそれが非同期であります応答。レスポンスが完了するまでサイズは設定されません。そのステートメントにブレークポイントを設定して、ステートメントが正しく設定されていることを確認します。それでもゼロの場合は、結果が正しくない可能性があります。しかし、コードは問題ありません。しかし、私は閉鎖サイクルに入るのを防ぐために、[所有されていない自己]または[弱い自己]を使用して自分自身をクロージャーに渡します。 – SArnab
スレッドのどのカテゴリで、値が適切に設定されているかどうかをチェックしますか? – Suleiman
サイズはインスタンスプロパティとして設定されます。次に、self.sizeを使用して設定することができます。これは関数の外部で使用できるようになります。そのステートメント自体にブレークポイントを追加することでそれを再確認することができます – SArnab