2009-09-19 6 views
5

J'ai le modèle typique dans les données de base (pour iPhone) avec les ministères et les employés (Département - >> employé).Core Data to-many relations. Sont-ils la charge paresseuse?

Je ne veux pas charger tous les employés d'un département chaque fois que je le charge, donc j'ai pensé que je créerais l'employé comme une propriété récupérée. Je pensais que je pourrais définir certains Predicate comme ceci:

employee.deparmentId = department.departmentId 

mais je ne pouvais pas (avec éditeur graphique Xcode). Maintenant, en lisant quelques articles, je suis enclin à définir une relation à plusieurs pour Département à employé (et son inverse) et l'utiliser.

Ma question est: Les relations sont-elles nombreuses Lazy Loading? ou va-t-il charger tous mes employés dans la "base de données" chaque fois que je crée (récupère) une liste de départements?

Merci à l'avance Gonso

Répondre

14

Non, les objets liés à à plusieurs et à une relation sont chargés paresseusement par défaut. Cependant, si vous avez besoin d'accéder à plusieurs d'entre eux chaque fois que vous récupérez un département, vous pouvez demander à Core Data de les charger simultanément (cela s'appelle la pré-extraction). Vous pouvez le faire comme suit:

[fetchRequest setReturnsObjectsAsFaults:NO]; 
[fetchRequest setRelationshipKeyPathsForPrefetching:[NSArray arrayWithObjects:@"employees", nil]]; 
+0

Au contraire, je ne veux pas charger les employés, sauf si je vais travailler avec eux. De plus, la plupart du temps, je ne listerai pas tous les empoyés (c'est-à-dire courrez à travers l'ensemble) mais obtiendrais un sous-ensemble (c'est-à-dire que j'exécuterai un fetch). Merci. – gonso

Questions connexes