私のSwift 3.0
プロジェクトにtableViewController
を使用しています。私はリクエストからテーブルビューの行数を取得したいので、その目的でAlamofire 4.0
を使用しています。tableViewメソッドのリクエストから行数を取得する方法は?
私はあなたがcompletionHandler
(How to return value from Alamofire)を設定する必要がAlamofire
から値を返すためにそれを見たが、Xcodeは私がtableView
方法でそれを設定することはできません。
var numRows = 0
func setRows(numRows : Int){
self.numRows = numRows
}
func getRows() -> Int{
return self.numRows
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
var JSON = [[String : AnyObject]]()
Alamofire.request(url!, method: .get, parameters: nil, encoding: JSONEncoding.default, headers: nil).responseJSON { response in
switch(response.result) {
case .success(_):
JSON = response.result.value as! [[String : AnyObject]]!
self.setRows(numRows: JSON.count)
break
case .failure(_):
print("Error")
break
}
}
return self.getRows()
}
が、私はそれを動作させることができないです:
これは私がセット/ getメソッドを試してみましたコードです。私はAlamofire要求が非同期であり、私が直面している問題ですが、tableView
のcompletionHandlerを設定することができないことを知っています。
PS:私はまた、同期Alamofire(making an asynchronous alamofire request synchronous)を作ってみましたが、完了ブロックが再び表示され、私はその方法でそれを設定することが可能であるならば、私は知りません(のtableView方式に設定することはできませんよまたは私は間違った方法でそれをやっている)。
私はtableViewメソッドにcompletion:(Int) -> Void
を追加しようとしましたが、Xcodeはそれを許可していません。
リクエスト後に行数を設定するにはどうすればよいですか?
ありがとうございます!
リターン0と完了ハンドラが呼び出されたときに、ローを設定してください –