我想获得 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 中,请执行带有谓词过滤的 fetch 请求到您需要的链接帐户类型 (3.)
或者,如果您打算无论如何都要获取所有其他类型,也许最好先获取它们。
并排尝试它们并在它们上运行 Instruments 时间分析器。
关于objective-c - objectsPassingTest : Vs filteredSetUsingPredicate:?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8372953/