2014-11-10 38 views
5

için durum duyarsız filtreleme benNSPredicate - Birden çok koşul

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(firstName CONTAINS %@) OR (lastName CONTAINS %@ )OR (UserName CONTAINS %@) ", myText,myText,myText]; 
NSArray *filtered = [responseArray filteredArrayUsingPredicate:predicate]; 

Düzgün çalışır, filtreleme için aşağıdaki NSPredicate kullanıyorum, ama bu harf duyarlı bu. Filtreye ihtiyacım var, büyük/küçük harfe duyarlı olmamalıdır.

Denedim,

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(ANY firstName CONTAINS %@) OR (ANY lastName CONTAINS %@ )OR (ANY UserName CONTAINS %@) ", myText,myText,myText]; 

Ama hatayı

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'The left hand side for an ALL or ANY operator must be either an NSArray or an NSSet.' 

Ben this answer sözü edilen anlayamıyorum atar. Yukarıdaki filtrelemede neyi değiştirmeliyim?

cevap

15

CONTAINS[c] ile birlikte tüm CONTAINS değiştirin. Köşeli parantez içindeki "c", büyük/küçük harfe duyarlı değildir. Ayrıca, bir "d" yi de hassas olmayan duyarsız hale getirebilirsiniz. Bu "Predicate Programming Guide" da açıklanmıştır.

+0

Teşekkür çalışıyor. Apple belgelerini görmek yerine tüm kodlama sorunlarımı google'a göndereceğim. [Bu cevap] (http://stackoverflow.com/a/1669433/756941), "ANY" anahtar kelimesini duyarsız olarak kullanmamı sağladı. Programlama kılavuzunda yer alan bağlantıyı lütfen ekleyin. – NAZIK