核心数据从B.cObjects为零的对象中获取B对象

时间:2012-09-13 07:49:42

标签: ios core-data

我有一个核心数据对象A.

对象A包含一个对象数组B - 如A.bObjects。 对象B包含一个对象C数组 - 如B.cObjects

如何从B.cObjects为零的对象A获取所有对象?

我可以解决这个问题:

NSMutableArray *array = [[NSMutableArray alloc] init];
for(B *b in A.bObjects)
{
    if([b.cObjects count] == 0)
        [array addObject:b];
}

但我认为如果我有很多对象B会占用大量资源。而且我不喜欢我的解决方法。:)

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我相信你可以使用,如果你只想要来自特定A的所有具有空cObjects的B。

NSPredicate* predicate = [NSPredicate predicateWithString:@"cObjects.@count == 0"];
NSArray* emptyCObjects = [A.bObjects filteredArrayUsingPredicate:predicate];

如果您希望所有具有空cObject的As的所有B,请将其与NSFetchRequest合并。

不是100%肯定会更有效,但如果我冒险猜测,我会说使用谓词和KVC,因为我相信Apple已经做了一些优化。还有更少的代码行