我需要根据逻辑找到 child 的数量。
我有表A,它有两个关系B和C。现在我需要找到B和C的计数。 计数 = B 数量 * C 数量。
数据:
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 条记录时,需要更多时间。如果有其他方法,请建议我。
最佳答案
不要按需做乘法。每次 A
实例与 B
或 C
的关系发生变化时,计算产品并将其存储在 A 的新属性中
。现在要获取您的总数,您可以只使用一次获取(返回字典类型),然后使用 @sum
(使用带有集合运算符的数组)并且不需要将任何对象实际加载到内存中.
考虑使用 KVO 来监控关系变化并触发产品更新。
关于ios - Coredata 中的 child 数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25861779/