Я новичок в быстром программировании и считаю, что мой запрос прост.Я пытался найти решение, но не смог.Мне нужно создать приложение, которое будет обрабатывать несколько запросов 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 и использовать метод синхронизации coz для цикла for.Я пробовал семафорный метод, но все еще не смог получить результаты по порядку.Я был бы признателен, если бы кто-нибудь дал мне пример этого кода, потому что я пытался исправить это последние несколько дней.Также у меня есть вопрос, почему мое сообщение Print внутри моего последнего функции tableView вызывалось дважды каждый раз, а не один раз?Прошу прощения за мой английский.