Tengo un atributo de tipo BOOLy quiero realizar una búsqueda de todos los objetos administrados donde se encuentra este atributo YES.
Para los atributos de cadena, es sencillo. Creo un predicado como este:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"userName = %@", userName];
Pero, ¿cómo hago esto, si tengo un atributo bool llamado selected y quiero hacer un predicado para esto? ¿Podría hacer algo como esto?
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"selected = %@", yesNumber];
¿O necesito otros especificadores de formato y simplemente paso YES?

Swift 4.0
let predicate = NSPredicate(format: "boolAttribute == %@", NSNumber(value: true))fuente
nilvalores de atributo. Por ejemplo, establezca el valor de un atributo ennil(diremos que lo llamóboolAttributecomo se muestra en esta respuesta). A continuación, crear su predicado:let predicate = NSPredicate(format: "boolAttribute == %@", boolValue). Nota:boolValuedebe ser igual atrueofalse, NONSNumber(value: boolValue). El predicado resultante será:boolAttribute == nil. Predicado que será devolver los objetos en los queboolAttributeesnil. Puede que no funcione para siempre ...No convierta a NSNumber, ni use doble "=="
Más apropiado para Swift> = 4:
NSPredicate(format: "boolAttribute = %d", true)Nota: "verdadero" en este ejemplo es un Bool (una estructura)
fuente
Swift 3
let predicate = NSPredicate(format: "boolAttribute == %@", NSNumber(value: true))En Swift 3 deberías usar
NSNumber(value: true).El uso de
NSNumber(booleanLiteral: true)y, en general, cualquier inicializador literal directamente no se recomienda y, por ejemplo, SwiftLint (v. 0.16.1) generará una advertencia para elExpressibleBy...Literalinicializador de uso directamente:fuente
NSPredicate(format: "boolAttribute == %@", true as NSNumber)Rápido 4
request.predicate = NSPredicate(format: "boolAttribute == %@", NSNumber(value: true))Swift 3
request.predicate = NSPredicate(format: "field = %@", value as CVarArg)fuente
Swift 3.0 ha realizado un ligero cambio en esto:
let predicate = NSPredicate(format: "boolAttribute == %@", NSNumber(booleanLiteral: true))fuente