NSPredicate
может с этим справиться, но я не уверен, что CoreData примет это как допустимый предикат для выполнения в хранилище данных.Возможно, возникнут проблемы с преобразованием побитового оператора в запрос SQL (если вы используете резервное хранилище SQLite).Вам просто нужно попробовать.
Синтаксис, однако, является именно тем, что вы ожидаете:
NSPredicate * p = [NSPredicate predicateWithFormat:@"(3 & 1) > 0"];
NSLog(@"%@", p);
NSLog(@"%d", [p evaluateWithObject:nil]);
Журналы:
3 & 1 > 0
1
Что касаетсяделать это для атрибута бинарного типа (т. е. атрибута, определенного как data
, верно?) Это, вероятно, не сработает.Битовые операторы действительно имеют смысл только при работе с целыми числами (насколько я их понимаю), поэтому выполнение их на NSData
не имеет большого смысла.Сначала преобразуйте его в число, а затем оно может работать.
edit
Может показаться, что SQLite поддерживает этот синтаксис, поскольку побитовые операторы с 2001 года , что означает, что Core Data, вероятно, также примет это.