我在我的Swift 3.0
项目中使用了tableViewController
。我想从请求中获取我的tableview的行数,我正在使用Alamofire 4.0
。如何从tableView方法的请求中获取行数?
我看到从Alamofire
返回值,你必须设置一个completionHandler
(How to return value from Alamofire),但Xcode中不要让我把它放在tableView
方法。
这是我与集尝试代码/ get方法:
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()
}
,但我不能使它发挥作用。我知道Alamofire请求是异步的,并且是我面临的问题,但我无法在tableView
函数上设置completionHandler。
PS:我也试图让同步Alamofire(making an asynchronous alamofire request synchronous),但完成块再次出现,我不能将它设置为的tableView方法(我不知道是否有可能将其在该方法或者我以错误的方式进行)。
我曾尝试将completion:(Int) -> Void
添加到我的tableView方法,但Xcode不允许我这样做。
在做出请求后应该如何设置行数?
在此先感谢!
返回0并且完成处理程序被调用时设置行 –