iphone - 检查核心数据中的一对多关系引用了多少对象的最有效方法?

标签 iphone objective-c core-data

假设我在公司实体中有员工关系,并且是一对多关系。而且数量确实很多。苹果公司 100 年来,拥有 1,258,500,073 名员工。

我可以简单地做一些事情

NSInteger numEmployees = [apple.employees count];

没有触发 1.258.500.073 故障? (好吧,100 年后,iPhone 将轻松处理如此多的物体,这是肯定的......但无论如何)

最佳答案

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

它在数据库级别执行计数。

关于iphone - 检查核心数据中的一对多关系引用了多少对象的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3031813/

相关文章:

ios - 未捕获的异常 'NSInternalInconsistencyException',原因 : '-[__NSCFDictionary setObject:forKey:]: mutating method sent to immutable object'

ios - 删除状态栏而不缩短导航栏 Objective-C

ios - 如何在 iOS 10.1.1 中读取电话号码 - Objective C/Swift

iphone - 如何知道捏合手势何时完成(UIGestureRecognizer)

iphone - 在 iPhone 应用程序中保存数据并下次读取数据的最快方法是什么?

ios - 警告 : Attempt to present <UIViewController: 0x74acff0> on <ViewController: 0x82b25a0> whose view is not in the window hierarchy

ios - NSManagedObjectContext 保存似乎丢失对象

xcode - Lion OSX Xcode 4.1中的myProject.sqlite在哪里?

ios - KVO 核心数据和原始访问器

iphone - Localized.strings 已损坏?