NSPredicate
puede manejarlo, pero no estoy seguro si CoreData lo aceptará como un predicado válido para la ejecución en un almacén de datos. Puede tener problemas para convertir el operador bit a bit en una consulta SQL (si está utilizando una tienda de respaldo SQLite). Tendrás que probarlo.
La sintaxis, sin embargo, es justo lo que se espera:
NSPredicate * p = [NSPredicate predicateWithFormat:@"(3 & 1) > 0"];
NSLog(@"%@", p);
NSLog(@"%d", [p evaluateWithObject:nil]);
Registros:
3 & 1 > 0
1
En cuanto a hacer esto en un atributo binario escrito (es decir, uno define como data
, ¿verdad?) Esto probablemente no funcionará. Los operadores bit a bit solo tienen sentido cuando se trabaja con enteros (en la medida en que los entiendo), por lo que ejecutarlo en un NSData
no tendría mucho sentido. Primero conviértalo en un número, y luego podría funcionar.
edición
Parecería que SQLite es compatible con esta sintaxis, ya que bitwise operators have been around since 2001, lo que significa que Core Data probablemente lo aceptará también.
que funciona !!!! Muchas gracias ! También estaba muy dudoso de que CodeData se tradujera a SQL, pero acabo de probarlo y parece funcionar. – CodeFlakes
Casi siempre es más seguro para comprobar '(X & bits)! = 0' en lugar de' (X & bits)> 0'. La razón es que establecer el bit más alto puede convertir el número en negativo. La única excepción es cuando está completamente seguro de que el número no está firmado. – HughHughTeotl