Ios 核心数据从B.cObjects为nil的对象获取B对象
我有一个核心数据对象a 对象A包含一组对象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.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,因此它应该产生与代码相同的结果。现在我明白了。是的,你的解决方案更好。非常感谢。