我遇到了一個問題,我確實解決了這個問題,但我覺得它效率很低,它涉及遍歷Core Data(用於iOS)父/子引用的實體層次來計算附加到某些實體的項目數量。實體層次結構中的計數項
讓我更具體。我有兩種類型的實體:Category
和Attachment
。
Category
實體通過父/子引用鏈接。附件與Categories
作爲多對一(許多附件到一個類別)鏈接。
如果我想要計算給定Category
的層次結構內的附件數量,是否有NSFetchRequest
我可以做的比這更有效?
NSInteger count = 0;
NSMutableArray *stack = [[NSMutableArray alloc] init];
[stack addObject:targetCategory];
while([stack count] > 0)
{
Category *current = [stack lastObject];
[stack removeLastObject];
count += current.attachments.count;
for (Category *cat in current.children)
{
[stack addObject:cat];
}
}
targetCategory
是選擇的根類別。
在此先感謝。
它可以在SQL中以某種方式完成嗎?如果是這樣,是否有可能將其移植到獲取請求? – 2013-02-19 06:25:01
或者也許有另一種可以用來查看數據的範例? – 2013-02-19 06:25:31
@dandrejvv:直接訪問SQLite存儲是危險的,因爲格式沒有正式記錄,並且可能隨時更改。你會有緩存問題。核心數據是對象圖形管理器,而不是數據庫,所以您應該考慮具有關係而不是數據庫記錄的對象。 - 我不知道如何更有效地解決您的問題。你有幾個類別?遍歷樹真的是一個性能問題嗎? – 2013-02-19 08:02:32