2014-05-07 12 views
15

Mi chiedo se qualcuno sarebbe in grado di aiutare. Sto cercando di cercare una classe Parse per un termine usando SearchBar. Il containsString tuttavia è case sensitive e vorrei che fosse senza distinzione tra maiuscole e minuscole. Si prega di consultare il codice qui sotto;Query Parse containsString rende insensibile

-(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]; 
} 

Qualsiasi aiuto sarebbe molto apprezzato.

risposta

29

Utilizzare l'espressione regolare (?i) invece! merito va al https://stackoverflow.com/a/9655203/2398886, https://stackoverflow.com/a/9655186/2398886 e http://www.regular-expressions.info/modifiers.html

Quindi sostituire

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

con

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

o si può anche utilizzare

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

Il codice finale dovrebbe essere:

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

Ottima risposta e funziona a meraviglia, grazie mille per questo :-) – user3611162

+2

Bello! Funziona perfettamente anche con swift: D Buon lavoro! – user3369214

+0

Ho usato questo e funziona. Ma cosa succede se voglio ottenere una corrispondenza di parole ESATTE ma anche usare una regex senza distinzione tra maiuscole e minuscole? – D34thSt4lker