Ios 核心数据从B.cObjects为nil的对象获取B对象

Ios 核心数据从B.cObjects为nil的对象获取B对象,ios,core-data,Ios,Core Data,我有一个核心数据对象a 对象A包含一组对象B,如A.B对象。 对象B包含一组对象C,如B.cObjects 如何从B.cObjects为零的对象A获取所有对象B 我可以这样做: NSMutableArray *array = [[NSMutableArray alloc] init]; for(B *b in A.bObjects) { if([b.cObjects count] == 0) [array addObject:b]; } 但我认为如果我有很多对象,这将需

我有一个核心数据对象a

对象A包含一组对象B,如
A.B对象
。 对象B包含一组对象C,如
B.cObjects

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

我可以这样做:

NSMutableArray *array = [[NSMutableArray alloc] init];
for(B *b in A.bObjects)
{
    if([b.cObjects count] == 0)
        [array addObject:b];
}
但我认为如果我有很多对象,这将需要很多资源。B.我不喜欢我的解决方法。:)


有什么想法吗?

我相信你可以使用,如果你只是想要某个特定a中所有的B都有空的对象的话

NSPredicate* predicate = [NSPredicate predicateWithString:@"cObjects.@count == 0"];
NSArray* emptyCObjects = [A.bObjects filteredArrayUsingPredicate:predicate];
如果希望所有As中的所有B都有空的Cobject,请将其与NSFetchRequest结合起来


不是100%确定哪一个更有效,但如果我冒险猜测,我会说使用谓词和KVC,因为我相信苹果已经在幕后进行了一些优化。而且它的代码行更少,我相信如果您只需要某个特定a中的所有b都有空的cobject,那么您可以使用它

NSPredicate* predicate = [NSPredicate predicateWithString:@"cObjects.@count == 0"];
NSArray* emptyCObjects = [A.bObjects filteredArrayUsingPredicate:predicate];
如果希望所有As中的所有B都有空的Cobject,请将其与NSFetchRequest结合起来


不是100%确定哪一个更有效,但如果我冒险猜测,我会说使用谓词和KVC,因为我相信苹果已经在幕后进行了一些优化。而且代码行数更少,非常感谢。在我的例子中,您忘记了按对象A进行筛选。因此,在我的例子中,谓词将是:NSPredicate*谓词=[NSPredicate predicate-withformat:@”(self.A=%@)和(cObjects@count==0)”,A];我正在使用该谓词过滤A.bObjects,因此它应该产生与代码相同的结果。现在我明白了。是的,你的解决方案更好。谢谢,非常感谢。在我的例子中,您忘记了按对象A进行筛选。因此,在我的例子中,谓词将是:NSPredicate*谓词=[NSPredicate predicate-withformat:@”(self.A=%@)和(cObjects@count==0)”,A];我正在使用该谓词过滤A.bObjects,因此它应该产生与代码相同的结果。现在我明白了。是的,你的解决方案更好。非常感谢。