Pracując na filtrowanie mój NSMutableDictionary na podstawie danych wprowadzonych przez użytkownika, stworzyłem następujący kod:NSPredicate predicateWithFormat: (NSString *) niespójność?
NSString *predicateString = [NSString stringWithFormat:@"SELF beginsWith[cd] %@", searchString];
NSPredicate *pred = [NSPredicate predicateWithFormat:predicateString];
NSArray *filteredKeys = [[myMutableDictionary allKeys] filteredArrayUsingPredicate:pred];
„searchString” jest przekazywany do metody z tej definicji:
(NSString*) searchString
To jednak spowodowało w następujący wyjątek:
... podniesiona [valueForUndefinedKey:]: ta klasa jest wartość nie klucz kodowania zgodny dla ke y ...
Rozwiązaniem okazały się:
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF beginsWith[cd] %@", searchString];
NSArray *filteredKeys = [[myMutableDictionary allKeys] filteredArrayUsingPredicate:pred];
Co ja nie rozumiem, dlaczego ten ostatni pracował, a Byłą zwrócił wyjątek. Czytałem trochę na temat key value coding, ale nie rozumiem, w jaki sposób ma to zastosowanie. (tj. tylko zmieniając sposób definiowania NSPredicate) Czy ktoś może mnie oświecić?
Aktualizacja: W odpowiedzi na jtbandes komentarz, poszedł do przodu i stworzyli projekt testapp demo tego problemu. http://dl.dropbox.com/u/401317/TestApp1.tar.gz
Będziesz naprawdę musiał pokazać nam cały wyjątek, jeśli spodziewasz się, że zrozumiemy, co to znaczy. – jtbandes