Core Data NSPredicate "eliminado == NO" no funciona como se esperaba

Estoy usando UIManagedDocument con el contexto de Parent Child.

En el contexto de mi hijo hago lo siguiente

Código 1
NSSet *results = [self.event.memberships filteredSetUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {

    return ([[evaluatedObject deleted] boolValue] == NO);

}]];

El código anterior devuelve los resultados esperados (solo los miembros No eliminados para el evento).

Código 2

Pero este código no lo hace. Obtiene todos los registros.

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"deleted == NO"];
NSSet *results = [self.event.memberships filteredSetUsingPredicate:predicate];

Parece confuso. Ambos deberían devolver los mismos resultados, peropredicateWithBlock devuelve resultados correctos donde comopredicateWithFormat devuelve todos los registros.

¿Cuáles son los pros y los contras de usarpredicateWithBlock en lugar depredicateWithFormat?

Respuestas a la pregunta(2)

Su respuesta a la pregunta