NSPredicate
có thể xử lý, nhưng tôi không chắc liệu CoreData có chấp nhận nó làm vị từ hợp lệ để thực thi trên kho dữ liệu hay không. Nó có thể gặp sự cố khi chuyển đổi toán tử bitwise thành truy vấn SQL (nếu bạn đang sử dụng một cửa hàng sao lưu SQLite). Bạn sẽ phải thử nó.
Cú pháp, tuy nhiên, chỉ là những gì bạn mong muốn:
NSPredicate * p = [NSPredicate predicateWithFormat:@"(3 & 1) > 0"];
NSLog(@"%@", p);
NSLog(@"%d", [p evaluateWithObject:nil]);
Logs:
3 & 1 > 0
1
Như để làm điều này trên một thuộc tính nhị phân, đánh máy (ví dụ, một trong những định nghĩa là data
Điều này có lẽ sẽ không hoạt động. Bitwise khai thác chỉ thực sự có ý nghĩa khi hoạt động trên số nguyên (trong khi tôi hiểu chúng), do đó, thực hiện nó trên một NSData
sẽ không có ý nghĩa nhiều. Chuyển đổi nó thành một số đầu tiên, và sau đó nó có thể làm việc.
chỉnh sửa
Nó sẽ xuất hiện mà SQLite hỗ trợ cú pháp này, vì bitwise operators have been around since 2001, có nghĩa là Core Data có thể sẽ chấp nhận nó là tốt.
Nguồn
2011-01-17 19:52:41
Đó là công trình !!!! Cảm ơn rất nhiều ! Tôi đã rất không rõ ràng rằng CodeData sẽ dịch sang SQL nhưng tôi đã thử nghiệm nó và nó có vẻ hoạt động. – CodeFlakes
Hầu như luôn an toàn hơn để kiểm tra '(x & bit)! = 0' thay vì' (x & bit)> 0'. Lý do là thiết lập bit cao nhất có thể biến số âm. Chỉ có ngoại lệ là khi bạn hoàn toàn chắc chắn số không được ký. – HughHughTeotl