2014-05-07 9 views
15

Zastanawiam się, czy ktoś mógłby pomóc. Próbuję przeszukać klasę Parse dla terminu, używając SearchBar. W przypadku containsString jest jednak rozróżniana wielkość liter i chciałbym, aby wielkość liter nie była rozróżniana. Zobacz kod poniżej;Query Parse zawieraString uczynić niewrażliwym

-(void)filterResults:(NSString *)searchTerm { 

[self.searchResults removeAllObjects]; 
PFQuery *query = [PFQuery queryWithClassName: @"Firefacts"]; 
[query whereKeyExists:@"Number"]; 
[query whereKey:@"Number" containsString:searchTerm]; 
NSArray *results = [query findObjects]; 
[self.searchResults addObjectsFromArray:results]; 
} 

Każda pomoc zostanie bardzo doceniona.

Odpowiedz

29

Zamiast tego użyj wyrażenia regularnego (?i)! Zasługa https://stackoverflow.com/a/9655203/2398886, https://stackoverflow.com/a/9655186/2398886 i http://www.regular-expressions.info/modifiers.html

więc zastąpić

[query whereKey:@"Number" containsString:searchTerm]; 

z

[query whereKey:@"Number" matchesRegex:[NSString stringWithFormat:@"(?i)%@",searchTerm]]; 

lub można również użyć

[query whereKey:@"Number" matchesRegex:searchTerm modifiers:@"i"]; 

Twój ostateczny kod powinien być:

PFQuery *query = [PFQuery queryWithClassName: @"Firefacts"]; 
[query whereKeyExists:@"Number"]; 
[query whereKey:@"Number" matchesRegex:searchTerm modifiers:@"i"]; 
+3

Świetna odpowiedź i działa na poczęstunek, dziękuję bardzo za to :-) – user3611162

+2

Nice! Działa również doskonale z szybkim: D Dobra robota! – user3369214

+0

Używam tego i działa. Ale co, jeśli chcę uzyskać dokładne dopasowanie do słowa, ale także za pomocą regexu niewrażliwego na wielkość liter? – D34thSt4lker