Jak skonstruować NSPredicate, który szuka wyszukiwanych terminów w dowolnym miejscu obiektów Array? Nie mogę tego dokładnie wyjaśnić, więc oto przykład.NSPredicate pasuje do dowolnych znaków
NSArray *array = @[@"Test String: Apple", @"Test String: Pineapple", @"Test String: Banana"];
NSString *searchText = @"Apple";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF CONTAINS[cd] %@", searchText];
NSArray *filteredArray = [array filteredArrayUsingPredicate:predicate];
NSLog(@"filteredArray: %@", filteredArray);
// filteredArray: (
// "Test String: Apple",
// "Test String: Pineapple"
//)
Ale jeśli użyję NSString *searchText = @"Test Str Appl";
, otrzymam zero wyników. Chciałbym, żeby pasowało do tych samych wyników dla tego ciągu.
Czego szukam to funkcja wyszukiwania, która jest podobna do menu "Otwórz szybko" w Xcode, gdzie nie ma znaczenia, czy twój ciąg wyszukiwania jest poprawnie sformułowany, tylko że litery są we właściwej kolejności jako mecz. Naprawdę mam nadzieję, że ma to sens.
Widocznie termin szukałem był „Fuzzy Matching”. – squarefrog