Tengo un atributo de tipo BOOL
y 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
nil
valores de atributo. Por ejemplo, establezca el valor de un atributo ennil
(diremos que lo llamóboolAttribute
como se muestra en esta respuesta). A continuación, crear su predicado:let predicate = NSPredicate(format: "boolAttribute == %@", boolValue)
. Nota:boolValue
debe ser igual atrue
ofalse
, NONSNumber(value: boolValue)
. El predicado resultante será:boolAttribute == nil
. Predicado que será devolver los objetos en los queboolAttribute
esnil
. 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...Literal
inicializador 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