Question

J'ai récemment consulté Core Data pour iPhone et j'ai une question à laquelle je n'ai pas trouvé de réponse dans la littérature.

Imaginons que j’ai un objet de modèle Utilisateur avec une relation à plusieurs avec un objet Achat . Un utilisateur peut avoir des milliers d'achats.

Toutes les informations que j'ai vues jusqu'ici semblent suggérer qu'une opération d'extraction effectuée dans cette relation renverrait un ensemble NSSet contenant tous les objets Achat associés à un utilisateur .

Je préférerais évidemment qu'il soit possible de limiter le nombre d'objets Achat récupérés par:

1) imposer une sorte de critère (par exemple, uniquement les achats supérieurs à 1 000 & # 163; etc.); ou

2) ne récupérez que par lots si ce qui précède n'est pas possible.

Est-ce que ce qui précède est possible? Je crains seulement qu'avec la mémoire limitée de l'iPhone, je risque de le surcharger avec des milliers d'objets récupérés inutilement.

Merci d'avance pour vos réponses.

Était-ce utile?

La solution

D'après ce que j'ai compris, lorsque vous récupérez des objets utilisateur, la relation avec ses objets d'achat sera une erreur qui ne sera chargée que si vous y accédez.
Au lieu de cela, vous pouvez extraire des objets d’achat avec un prédicat qui spécifie le ou les utilisateurs et vérifie les autres critères.

Cela dit, je testerais certainement des cas d'utilisation réalistes (sur les appareils) avant de passer trop de temps sur les problèmes de performances. L’efficacité de l’iPhone et de Core Data peut vous surprendre.

Autres conseils

  1. Utiliser une propriété extraite
  2. Utiliser NSFetchedResultsController

La réponse à ces questions ainsi que les questions que vous aurez ensuite se trouvent dans le Guide de programmation de base de données pour l'iPhone.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top