2011-12-20 23 views
74

Tôi có một NSArray mà tôi muốn lọc ra một số đối tượng bằng cách sử dụng một NSPredicate, tôi đã hy vọng tôi có thể sử dụng NOT IN kể từ khi tôi thấy rằng tôi có thể dễ dàng làm một IN.NSArray với NSPredicate sử dụng NOT IN

Vì vậy, tôi có mảng của tôi:

self.categoriesList 

Sau đó, tôi nhận được các giá trị tôi muốn loại bỏ:

NSArray *parentIDs = [self.cateoriesList valueForKeyPath:@"@distinctUnionOfObjects.ParentCategoryID"]; 

này mang lại cho tôi một danh sách các ParentCategoryID cho loại TÔI KHÔNG muốn hiển thị, vì vậy tôi có thể sử dụng NSPredicate để xóa chúng:

self.cateoriesList = [self.cateoriesList filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"CategoryID NOT IN %@",parentIDs]]; 

Điều này không thành công:

reason: 'Unable to parse the format string "CategoryID NOT IN %@"' 

Nếu tôi chỉ muốn sử dụng IN hoạt động hoàn hảo.

Trả lời

182

Còn khoảng NOT (CategoryID IN %@) thì sao?

+3

ummm ... yeah that works - DOH! – Slee

+0

! (CategoryID IN% @) - cũng hoạt động) –

1

Làm thế nào để sử dụng NONE?

[NSPredicate predicateWithFormat:@"NONE CategoryID IN %@", parentIDs]; 
+2

Lưu ý rằng NONE chỉ dành cho mối quan hệ nhiều. Xem http://stackoverflow.com/questions/12127618/nspredicate-the-left-hand-side-for-an-all-or-any-operator-must-be-either-an-nsa – Lubbo

Các vấn đề liên quan