ios - 如何从 tableView 方法中的请求中获取行数?

标签 ios swift xcode uitableview alamofire

我在我的 Swift 3.0 项目上使用 tableViewController。我想从请求中获取 tableview 的行数,为此我正在使用 Alamofire 4.0

我看到要从 Alamofire 返回值,你必须设置一个 completionHandler ( How to return value from Alamofire ) 但 Xcode 不允许我在 tableView< 上设置它 方法。

这是我尝试使用 set/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。

P.S: 我也曾尝试制作同步 Alamofire ( making an asynchronous alamofire request synchronous ) 但再次出现完成 block 并且我无法将其设置为 tableView 方法(我不知道是否可能将其设置为该方法,否则我以错误的方式进行设置)。

我已经尝试将 completion:(Int) -> Void 添加到我的 tableView 方法中,但 Xcode 不允许我这样做。

请求后如何设置行数?

提前致谢!

最佳答案

我正在做这样的事情:

将在 tableView 中的项目表

var positionsTable = [[String : AnyObject]]()

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return positionsTable.count
}

根据请求我获取项目并重新加载 tableView

Alamofire.request(.GET, url, headers: headers, encoding: .JSON)
      .responseJSON { (response) in
          print(response)
          self.positionsTable = response.result.value
          self.tableView.reloadData()
     }
 }

关于ios - 如何从 tableView 方法中的请求中获取行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39700209/

相关文章:

objective-c - 数组的大小 - iOS

ios - 弹出图片库无法在 iPad iOS Swift 中工作

ios - 如何使用 NSTimer 在 UIView 中绘图

iphone - 如何将我的应用以不同的 iPhone/ipad 尺寸上传到 App Store

ios - 如何更改 MapKit Swift 的颜色

ios - 添加到 View 时,约束项必须是该 View (或 View 本身)的后代。

python - 麻省理工学院公开课,第 3 讲 - 数学问题

ios - 是否可以在我的应用程序中接收 iOS 收集的地理信息?

ios - 在 UITabBar 项下添加 gif 动画

mysql - 需要有关 Mac OS 上的 mySql 的帮助