NSUnknownKeyException bei Verwendung der Suchleiste.diese Klasse ist für den Schlüsselnamen nicht mit der Schlüsselwertcodierung kompatibel

StackOverflow https://stackoverflow.com//questions/25020897

Frage

Ich habe mir Posts angesehen, die andere Leute mit dieser Art von Fehler gepostet haben, aber nicht in einem UISearchBar, und keine, mit der ich mein Problem in Verbindung bringen kann:

Kurz gesagt, ich spiele mit Suchleisten und versuche, die Grundlagen zu erstellen.

Ich habe 2 Arrays

@interface ViewController ()
{
    NSMutableArray *dataList;
    NSArray *searchResults;
}

Ich habe mein Datenlisten-Array wie folgt gefüllt:

dataList = [[NSMutableArray alloc] init];

[dataList addObject:@"This is row 1"];
[dataList addObject:@"That is row 2"];
....
[dataList addObject:@"More data in 20"];

Ich habe meine eingerichtet searchDisplayController:

-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString*) searchString
{
    [self filterContentForSearchText:searchString
                           scope:[[self.searchDisplayController.searchBar scopeButtonTitles]
                                  objectAtIndex:[self.searchDisplayController.searchBar selectedScopeButtonIndex]]];
    return YES;
}

und ich habe eine Filterfunktion:

- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope {    
    NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"name contains[c] %@", searchText];

    searchResults = [dataList filteredArrayUsingPredicate:resultPredicate];
}

In der letzten Filterfunktion erhalte ich am letzten Zeilenanfang eine Fehlermeldung searchResults =

2014-07-29 17:47:16.056 TestSearch[44628:60b] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<__NSCFConstantString 0x1000069c8> valueForUndefinedKey:]: this class is not key value coding-compliant for the key name.'
*** First throw call stack:
...
...
...

Irgendwelche Ideen?

Ich habe versucht, eine zu verwenden NSArray statt NSMutableArray aber ich bekomme den gleichen Fehler.

Der tableView füllt sich OK mit den Daten, also kein Problem.

War es hilfreich?

Lösung

name ist kein Eigentum eines NSString Objekt.verwenden self für das Prädikat:

NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"self contains[c] %@", searchText];
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top