我需要根据逻辑找到孩子的数量。
我有表A,它有两个关系B和C.现在我需要找到B和C的计数。 计数= C的B * NO否。
数据:
A1
{
{
B1a
},
{
C1a,
C1b
}
},
A2:
{
{
B2a,
B2b
},
{
C2a,
C2b
}
}
总计数= 6
我试过以下
NSEntityDescription *entity = [NSEntityDescription entityForName:@"A" inManagedObjectContext:context];
NSArray *allObjects = [context executeFetchRequest:fetchRequest error:&fetchError];
NSInteger totalCount= 0;
for(A *a in allObjects)
{
NSInteger countOfB = [a.B count];
NSInteger countOfc = [a.C count];
totalCount = totalCount + (countOfB * countOfc);
}
这很好用。但是当我有10000条记录时,它需要更多的时间。如果有其他方法,请建议我。
答案 0 :(得分:1)
不要按要求进行乘法运算。每次A
实例与B
或C
的关系发生更改时,请计算产品并将其存储在A
的新属性中。现在要获取总计数,您只能使用一次提取(返回字典类型),然后使用@sum
(使用带有集合运算符的数组),并且不需要将任何对象实际加载到内存中。
考虑使用KVO监控关系变化并触发产品更新。