2 votes

Récupérer uniquement les données nécessaires dans CoreDate ou toutes les données ?

Ma question peut sembler un peu confuse, mais je n'ai pas trouvé de meilleur titre. Je m'explique : Je développe une application iOS qui utilise CoreData pour stocker des objets et les rendre persistants. Je veux afficher les objets stockés dans un UITableView . Chaque objet contient un date . Je veux que mon tableau affiche les objets triés par date, et que chaque mois soit une section dans ce tableau.

+--------------------+
+---  March 2016  ---+
+--------------------+
+ - Entry 1          +
+ - Entry 2          +
+--------------------+
+-- February 2016  --+
+--------------------+
+ - Entry 1          +
+ .....              +
.
.
.
.
+--------------------+

Étant donné que la vue de la table doit connaître le nombre de lignes et de sections avant les données sont affichées, j'ai besoin de savoir au moins combien d'entrées il y a dans mon stockage CoreData.

Approche 1

Je ne récupère que les dates de chaque objet et j'indique à la vue tableau le nombre de lignes qu'elle doit afficher. Lorsque la méthode de la source de données cellForRowAtIndexPath est appelé, je récupère les données pour les objets dont j'ai besoin. CoreData est-il suffisamment rapide pour faire cela, ou l'utilisateur doit-il attendre un moment jusqu'à ce que les données soient chargées ?

Approche 2

Je récupère tout de mon stockage CoreData et je "stocke" les objets dans mon fichier ViewController qui contient la vue du tableau. Il est possible qu'il faille beaucoup de mémoire pour conserver chaque objet en mémoire.

Approche 3 ( chargement paresseux ?)

Je récupère les 10 à 20 derniers objets de CoreData. Lorsque l'utilisateur fait défiler le tableau et qu'il est sur le point d'atteindre la dernière entrée, je récupère les 10 à 20 entrées suivantes et je les affiche. Qu'en est-il des entrées que j'ai chargées au début ? Dois-je les conserver en mémoire ? Ou les récupérer à nouveau si l'utilisateur fait défiler le tableau jusqu'en haut ?

J'espère que vous pourrez m'aider et que quelqu'un a de l'expérience dans ce domaine. Je vous remercie !

2voto

SerjOxo Points 362

Utilisation NSFetchedRequestController pour récupérer des données et, si nécessaire, y ajouter des NSPredicate. Bonne lecture :-)

0voto

John Doe Points 65

Vous devez utiliser NSFetchedResultsControler . Aucune des options que vous avez énumérées ne semble correcte car cette exigence est déjà prise en charge par le cadre. Vous ne devez pas vous préoccuper de ce qu'il faut récupérer. Il suffit de fournir la configuration correcte et tout sera pris en charge par le framework.

Lorsque vous instanciez NSFetchedResultsController , fournir les sectionNameKeyPath paramètre. Les résultats de la recherche seront regroupés en fonction de cet attribut. Il peut s'agir d'un attribut calculé, comme dans votre cas, le mois et l'année de votre enregistrement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X