私は問題に遭遇しました、私はそれを解決しました、しかしそれはかなり非効率的であると感じます、それは特定のエンティティに付けられたアイテムの量を数えるために親/子参照のコアデータ(iOS用)エンティティ階層を横断することを含みます。
具体的に説明します。私は2つのタイプのエンティティを持っています:Category
とAttachment
。
エンティティは、Category
親/子の参照を介してリンクされます。Categories
添付ファイルは、多対1(1つのカテゴリへの多数の添付ファイル)としてリンクされます。
特定の階層内にある添付ファイルの数をカウントしたい場合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
選択したルートカテゴリです。
前もって感謝します。