1

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

对象 A 包含对象 B 的数组A.bObjects。对象 B 包含与 C 类似的对象数组B.cObjects

如何从对象 A 中获取所有对象 B,其中B.cObjectsnil 是什么?

我可以像这样解决这个问题:

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

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

有任何想法吗?

4

1 回答 1

1

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

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

如果您希望所有 As 中的所有 B 都具有空 cObject,请将其与 NSFetchRequest 结合使用。

不是 100% 确定哪个会更有效,但如果我冒险猜测,我会说使用谓词和 KVC,因为我相信 Apple 已经在后台进行了一些优化。而且它的代码行更少

于 2012-09-13T08:54:17.670 回答