我想获得 AccountUser
的 linkedAccount
类型 LinkedAccountFacebook
,其中 AccountUser
有很多 LinkedAccount
的(在核心数据中)。
哪个更好用?
objectsWithOptions:passingTest:
NSSet *facebookLinkedAccounts = [activeAccountUser.linkedAccounts objectsWithOptions:NSEnumerationConcurrent passingTest:^BOOL(id obj, BOOL *stop) { if ([(LinkedAccount *)obj hasType:LinkedAccountTypeFacebook]) { *stop = YES; return YES; } else { return NO; } }];
filteredSetUsingPredicate:
NSSet *facebookLinkedAccounts = [activeAccountUser.linkedAccounts filteredSetUsingPredicate: [NSPredicate predicateWithFormat:@"type == %i", LinkedAccountTypeFacebook]];
通过
NSManagedObjectContext
执行获取请求。
或者,有更好的方法吗?
最佳答案
调用 activeAccountUser.linkedAccounts 将从核心数据中获取它们(如果它们是错误的),假设您已经建立了关系。
“linkedAccounts”是错误的吗?即它已经在内存中了吗?如果是这样,我会使用 (2.)。如果数据仍在您的后备存储 ID 中,请使用谓词过滤到您需要的链接帐户类型执行提取请求 (3.)
或者,如果您打算无论如何都获取所有其他类型,也许最好先获取所有类型。
并排尝试它们并在它们上运行 Instruments 时间分析器。
关于objective-c - 对象通过测试 : Vs filteredSetUsingPredicate:?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8372953/