2010-11-03 89 views
1

在我的數據模型中,我有兩個實體:
類別和項目。CoreData:如何獲得總數

類別
ATTR:命名
REL:父(目的地:類別,逆:子類別)
REL:子類別(目的地:類別,反:父母,一對多的關係)
REL:項目(目的地:項目,反:類別,一對多的關係)

項目
ATTR:標題
REL:類(目的地:類別,反:項目,一對多的關係)

得到以下TVC的:根,類別和項目
根顯示所有類別的對象沒有父
分類顯示所有類別具有一定的父對象的對象
項目顯示所有Item對象與特定類別

實施例的數據:

 
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 

那麼在Root TVC中,如何獲得每個「Top Cat」的項目總數?
如果我想知道「子貓」的數量,我可以使用下面的keyPath:「subCategories。@ count」,但是像「subCategories.items。@ count」不起作用。

希望你能幫助我。

乾杯 -Me

回答

5

有三種方式獲取計數:

  1. 消防取回有問題的頂級類別的請求,並從該對象獲取實體的數量在它的子 - 類別關係集。這種方法的缺點是它會導致CoreData從商店獲取關係屬性,獲取與該關係相關的每個對象。例如

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

  2. 使用RAW SQLite API的直接查詢的數據存儲(注意,這是更快)。

  3. 可能是最簡單的,使用NSManagedObjectContextcountForFetchRequest:,它將返回匹配給定獲取請求的對象數。