Как получить результат в tableViewCell, используя несколько запросов alamofire внутри цикла for - PullRequest
0 голосов
/ 27 апреля 2019

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

...