我正在使用带有父子上下文的 UIManagedDocument。
在我的孩子上下文中,我执行以下操作
代码 1
NSSet *results = [self.event.memberships filteredSetUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
return ([[evaluatedObject deleted] boolValue] == NO);
}]];
上面的代码返回预期的结果(仅限未删除的事件成员)。
代码 2
但是这段代码没有。它获取所有记录。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"deleted == NO"];
NSSet *results = [self.event.memberships filteredSetUsingPredicate:predicate];
这似乎令人困惑。两者都应该返回相同的结果,但在 as返回所有记录predicateWithBlock
的情况下返回正确的结果。predicateWithFormat
使用predicateWithBlock
代替的优点和缺点是predicateWithFormat
什么?