iOS - Comment faire de la tableview utiliser la pagination de l'API de sortie?
Une API, je suis en train d'écrire a propos des enregistrements de 2000, est retourné en JSON via une simple API RESTful j'ai écrit.
Pour réduire les problèmes avec beaucoup de données, je veux utiliser la pagination afin que je ne retour-dire le premier 10 ou 20 premiers par demande via comme un offset
ou limit
ou page
, etc.
Mais ma question est comment l'iOS UITableView
savoir quand la prochaine page de résultats?
Je suis vraiment pas sûr de savoir comment le faire. L'utilisateur pourrait être le défilement ultra-rapide et donc, l'API pourrait ne pas avoir assez de temps pour récupérer de 20 ou de 50 dossiers à la fois.
Un autre problème est lié à ce qui, permet de dire que l'utilisateur fait défiler sur la UITableView, puis vers le haut puis vers le bas encore: comment prévenir l'API de tirer plusieurs fois pour les mêmes lignes?
Grâce
Vous devez vous connecter pour publier un commentaire.
Me semble que vous n'êtes pas à penser en termes de MVC . Votre UITableView a très peu à voir avec la pagination et webrequest. C'est juste inquiet à propos de sa source de données, pas de pages.
Restuful Conception d'API :
Supposons que votre Requête web est conçu comme suit :
Vous renverra un Tableau JSON. En outre, pour que son utile d'avoir un nombre de paramètre et un lien vers la page suivante. Cela aide dans l'analyse et la synchronisation avec le serveur web.
comment empêcher l'API de tirer plusieurs fois pour les mêmes lignes?
Un simple drapeau est suffisante pour éviter le chargement de plusieurs pages. Assurez-vous que le drapeau est accessible dans le thread principal. La réelle webrequest doit aller dans le thread d'arrière-plan.
Ci-dessous est le code que vous devez mettre dans votre UITableViewController qui charge les données
didFinishRecordsRequest
etdidFailedChalkBoardRequestWithError
dans legetRecords
méthode? Comme dans legetRecords
méthode si la fonction de rappel échoue lors de l'exécution de la async requête get au serveur que vous appelez ledidFailedChalkBoardRequestWithError
méthode et si le rappel a réussit ensuite, vous devez appeler ladidFinishRecordsRequest
méthode. - Il Correct?didFinishRecordsRequest
etdidFailedChalkBoardRequestWithError
méthodes dans le rappel de laAlamoFire
obtenir la demande de la méthode elle-même au lieu de créer ma propre fonction de rappel.Pour Swift