我做了一个调用用户api列表的函数
并将其放在viewDidLoad
中,以便在屏幕加载后立即在TableViewCell
中获得列表。
但是问题在于调用numberOfRowsInSection
之后,Alalmofire.rquest被自动调用,cellForRowAtIndexPath
没有被调用,因此TableView
为空。
func userList(){
let header = [
"some header":"SomeHeaderValue"
]
var request = BaseUrl + "userList"
let parameters = ["":""]
var encodingFormat: ParameterEncoding = URLEncoding()
if request == "" {
encodingFormat = JSONEncoding()
}
Alamofire.request(request, method: .get, parameters: parameters, encoding: encodingFormat, headers: header).responseJSON { (response:DataResponse<Any>) in
switch(response.result) {
case .success(_):
if let data = response.result.value{
print(response.result.value)
self.userArray = data as! [AnyHashable]
}
break
case .failure(_):
print(response.result.error)
break
}
}
}
答案 0 :(得分:5)
网络调用是异步的,需要时间。收到数据后,您需要重新加载tableView
。
Alamofire.request(request, method: .get, parameters: parameters, encoding: encodingFormat, headers: header).responseJSON { (response:DataResponse<Any>) in
switch(response.result) {
case .success(_):
if let data = response.result.value{
print(response.result.value)
self.userArray = data as! [AnyHashable]
print(self.groupArray)
print(self.groupArray.count)
DispatchQueue.main.async {
tableView.reloadData()
}
}
break
case .failure(_):
print(response.result.error)
break
}
}
答案 1 :(得分:0)
if let data = response.result.value{
print(response.result.value)
self.userArray = data as! [AnyHashable]
print(self.groupArray)
print(self.groupArray.count)
self.tableview.reloadData()
}
break