最有效的方法来检查Core Data中多对多关系引用了多少个对象?

时间:2010-06-13 10:04:15

标签: iphone objective-c core-data

让我们说我在公司实体中有员工关系,而且很多。他们真的很多。苹果在100年内拥有1.258.500.073名员工。

我可以简单地做一些像

这样的事情
NSInteger numEmployees = [apple.employees count];

没有发出1.258.500.073错误? (好吧,在100年后,iPhone 将很容易处理这么多物品,当然......但无论如何)

1 个答案:

答案 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;

在数据库级别执行计数。