Проблема с UISearchBar и NSMutableArray - PullRequest
2 голосов
/ 13 августа 2011

У меня есть таблица с панелью поиска. Я хочу выполнить поиск по всей базе данных основных данных.

Я загрузил все в массив здесь:

NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Entity" inManagedObjectContext:managedObjectContext]; 
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease]; 
[request setEntity:entityDescription]; 
NSError *error = nil; 
NSArray *array = [managedObjectContext executeFetchRequest:request error:&error];   
self.myArray = array;

Затем я выполняю поиск, используя этот метод, но получаю сообщение об ошибке:

- (void) searchTableView {

    NSString *searchText = searchBar.text;
    NSMutableArray *searchArray = [[NSMutableArray alloc] init];

    for (NSDictionary *dictionary in myArray)
    {
        NSString *value = [dictionary objectForKey:@"name"];
        [searchArray addObject:value];
    }

    for (NSString *sTemp in searchArray)
    {
        NSRange titleResultsRange = [sTemp rangeOfString:searchText options:NSCaseInsensitiveSearch];

        if (titleResultsRange.length > 0)
            [copyListOfItems addObject:sTemp];
    }
    [searchArray release];
    searchArray = nil;
}

Но когда я ищу, я получаю сбой здесь:

MedicalCode *code = [self.copyListOfItems objectAtIndex:indexPath.row]; 
cell.codeLabel.text = code.description;

Ошибка:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[ICD9Disease objectForKey:]: unrecognized selector sent to instance 0x1be6e0'

Ответы [ 2 ]

5 голосов
/ 13 августа 2011

Вы получаете ошибку, потому что вы запрашиваете объект, но вы пытаетесь установить строку в строке:

NSString *value = [dictionary objectForKey:@"name"];

Поскольку вы получаете строку, а не объектвам нужно использовать valueForKey:

    NSString *value = [dictionary valueForKey:@"name"];
0 голосов
/ 14 августа 2011

Похоже, вы ожидаете, что запрос извлечения вернет словари, но на самом деле он возвращает экземпляры класса ICD9Disease.

...