0
votes

Par Alamofire, aimerait obtenir des données et l'insérer à la TableView, mais avant de terminer l'insertion, la Vieille est chargée.

Comme je vous écris sur le titre, j'utilise Alamofire pour obtenir des données, puis le décoder et l'ajouter à la liste "Articlelist" puis essayez de l'insérer à la tableView, mais il semble que la TableView soit chargée à Tout d'abord, puis les données sont collectées et insérées sur la liste. Je voudrais d'abord rendre l'insertion, puis charger la tableView mais je ne trouve pas de solution. Je viens de m'essayer en mettant de reporter dans la vueDidLoad et faites de la tableview.realoddata, mais ça ne marche pas ... Quelqu'un pourrait-il me donner une idée de cette situation? xxx


0 commentaires

3 Réponses :


0
votes

code à l'intérieur de reporter est exécuté après "retour" de la méthode ou par exemple après le retour du cycle de courant de certaines boucles

car ViewDidLoad retourne VOID < / Code>, cette méthode revient immédiatement après updateeNewsdata () est appelé et il n'attend pas qu'une autre méthode appelée à partir de retours intérieurs ou après le code à l'intérieur de la fermeture est exécutée ( de repore < / code> n'est pas exécuté après que la fermeture est exécutée depuis la fermeture intérieure, vous ne pouvez pas retourner la valeur pour la méthode où la fermeture a été déclarée).

Pour corriger votre code, il suffit de recharger la vue des données après avoir ajouté les articles xxx


0 commentaires

0
votes

Le bloc de reportage sera exécuté lorsque l'exécution quitte la portée actuelle, car votre demande est un bloc asynchronisé qui signifie que lorsque la tableview.reloaddata () est appelée la demande est toujours en cours.

Vous devez appeler ReloaderData lorsque la demande est terminée: xxx

... xxx


0 commentaires

1
votes

au lieu d'écrire tableview.reloaddata () code> in ViewDidLoad code> Méthode, vous devez l'écrire après avoir terminé Ajout de tous les articles dans le code code> dans le ArticleLelist Code> Array.

Exemple de code: p>

ViewDiDload () code> devrait être comme: p>

func updateNewsData() {
    getNewsData() { (articles) in
        guard let articleArray = articles?.articles else
        {fatalError("cannot get articles.")}

        articleList.append(contentsOf: articleArray)
        DispatchQueue.main.async {
            tableView.reloadData()
        }
    }
}


0 commentaires