我是快速编程的新手,我相信我的要求很简单。我试图找到解决方案,但没有。我需要制作能够先处理多个Alamofire请求的应用,然后在tableViewCell的结果中显示结果。
我已尝试使用dispatchGroup等。 这是我的代码:
class TViewController: UITableViewController {
var name = Name()
var array = ["3", "4"]
let urlName = "http://somerestUrl/"
override func viewDidLoad() {
super.viewDidLoad()
getName()
}
func getName(){
for id in self.array{
let newUrl = urlName + id // 1
Alamofire.request(newUrl, method: .get) //2
.responseJSON { response in
if response.result.isSuccess {
guard let responseData = response.data else {return}
let jsonDecoder = JSONDecoder()
self.name = try! jsonDecoder.decode(Name.self, from: responseData) //3
self.tableView.reloadData() //4
} else {
print("Error: \(String(describing: response.result.error))")
}
}
}
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return array.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! TViewCell
print("Inside tableView") //5
cell.nameLbl.text = name.format?.description
return cell
}
}
我认为我需要通过func getName并使用for循环的同步方法coz。我已经尝试过信号量方法,但是仍然无法按顺序获得结果。如果有人可以在此代码上给我示例,我将不胜感激,因为我已尝试将其修复几天。我也有一个疑问,为什么我在上一个tableView函数中的打印消息每次都被调用两次而不是一次?对不起,我的英语。