NSArray dengan NSPredicate menggunakan NOT IN

90

Saya memiliki NSArray yang ingin saya filter objek tertentu menggunakan NSPredicate, saya berharap saya dapat menggunakan NOT IN karena saya melihat bahwa saya dapat dengan mudah melakukan IN.

Jadi saya memiliki array saya:

self.categoriesList

Lalu saya mendapatkan nilai yang ingin saya hapus:

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

Ini memberi saya daftar ParentCategoryID untuk kategori yang TIDAK ingin saya tampilkan, jadi saya pikir saya dapat menggunakan NSPredicate untuk menghapusnya:

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

Ini gagal:

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

Jika saya ingin menggunakan hanya IN yang berfungsi dengan sempurna tentunya.

Lengan
sumber

Jawaban:

222

Tentang apa NOT (CategoryID IN %@)?

dreamlax
sumber
2

Bagaimana kalau menggunakan NONE?

[NSPredicate predicateWithFormat:@"NONE CategoryID IN %@", parentIDs];
Mark Adams
sumber
2
Perhatikan bahwa NONE hanya untuk hubungan ke banyak. Lihat stackoverflow.com/questions/12127618/…
Lubbo