让我们说我在公司实体中有员工关系,而且很多。他们真的很多。苹果在100年内拥有1.258.500.073名员工。
我可以简单地做一些像
这样的事情NSInteger numEmployees = [apple.employees count];
没有发出1.258.500.073错误? (好吧,在100年后,iPhone 将很容易处理这么多物品,当然......但无论如何)
答案 0 :(得分:2)
-count
不会触发错误。如果你已经在内存中有了父对象,那么这是获得这个数量的最好方法。
如果你没有内存中的对象,那么性能会更高效:
NSManagedObjectContext *moc = ...;
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"child" inManagedObjectContext:moc]];
[request setPredicate:[NSPredicate predicateWithFormat:@"parent == %@", parent]];
NSError *error = nil;
NSInteger count = [moc countForFetchRequest:request error:&error];
NSAssert2(error == nil, @"Error fetching request: %@\n%@", [error localizedDescription], [error userInfo]);
[request release], request = nil;
在数据库级别执行计数。