2010-11-03 5 views
1

Dans mon modèle de données, j'ai deux entités:
Catégorie et article.CoreData: comment obtenir le nombre total

Catégorie
attr: nom
rel: parent (Destination: Catégorie, inverse: Sous-classes)
rel: Sous-Catégories (Destination: Catégorie, inverse: parent, à-plusieurs)
rel: articles (Destination: Point, inverse: catégorie, à-plusieurs)

article
attr: titre
rel: Catégorie (Destination: Catégorie, inverse: articles, à-plusieurs)

Vous avez les de TVC suivants: Root, Catégorie et article
affiche racine tous les objets de catégorie avec aucun parent
Catégorie affiche tous Catégorie objets avec un certain objet parent
affiche d'article tous les objets de l'objet avec une certaine catégorie

de données Exemple:

 
Top Cat 1 
- Sub cat 1 
- Item 1 
- Item 2 
- Item 3 
- Item 4 
- Sub cat 2 
- Item 1 
- Sub cat 3 
- Item 1 
- Sub cat 4 
- Item 1 
- Item 2 
- Sub cat 5 
Top Cat 2 
- Sub cat 1 
- Item 1 
- Item 2 
- Item 3 
- Sub cat 2 
- Item 1 
- Sub cat 3 
- Item 1 

Alors, comment puis-je obtenir le nombre total d'éléments par "Top Cat" dans le Root TVC?
Si je veux connaître le nombre de "Subcat" je peux utiliser le keyPath suivant: "subCategories. @ Count" mais quelque chose comme "subCategories.items. @ Count" ne fonctionne pas.

J'espère que vous pouvez m'aider.

Vive -Me

Répondre

5

Il y a trois façons obtenir le nombre:

  1. Incendie d'une demande de récupération de la catégorie supérieure en question, et à partir de cet objet obtenir le nombre d'entités dans ses sous -catégories ensemble de relations. L'inconvénient de cette approche est qu'elle va amener CoreData à extraire la propriété de relation du magasin, en récupérant tous les objets associés à cette relation. par exemple.

    NSManagedObject *topCat = [context performFetch:topCatFetchRequest]; NSInteger count = topCat.subCategories.count;

  2. utiliser l'API SQLite brute de pour interroger la banque de données directement (notez ce qui est beaucoup plus rapide).

  3. Probablement le plus simple, utilisez NSManagedObjectContextcountForFetchRequest:, ce qui renverra le nombre d'objets correspondant à une requête d'extraction donnée.
Questions connexes