Контроллер панели поиска - сбой при поиске результатов - PullRequest
1 голос
/ 29 сентября 2011

Я реализую контроллер панели поиска для поиска в табличном представлении. Приведенный ниже код метода, который выполняет поиск, завершается с ошибкой "- [__ NSArrayM rangeOfString: options:]: нераспознанный селектор, отправленный экземпляру 0x65558e0 '

Массив locationInfo - это массив, содержащий 26 массивов, каждый из которых содержит несколько объектов, состоящих из строк.

Кто-нибудь может подсказать, почему происходит сбой кода?

Спасибо.

- (void)handleSearchForTerm:(NSString *)searchTerm
{
[self setSavedSearchTerm:searchTerm];

if ([self searchResults] == nil)
{
    NSMutableArray *array = [[NSMutableArray alloc] init];
    [self setSearchResults:array];
    [array release], array = nil;
}

[[self searchResults] removeAllObjects];

if ([[self savedSearchTerm] length] != 0)
{
    for (NSString *currentString in [self locationInfo])
    {
        if ([currentString rangeOfString:searchTerm options:NSCaseInsensitiveSearch].location != NSNotFound)
        {
            [[self searchResults] addObject:currentString];
        }
    }
}
}

Ответы [ 2 ]

2 голосов
/ 29 сентября 2011

Как вы указали в вопросе, что locationInfo - это массив, содержащий 26 массивов, так, currentString в [self locationInfo] будет возвращать только массив, поэтому попробуйте написать что-то вроде следующего:

для (NSArray * currentArray в [self locationInfo])

{
for (NSString *currentString in currentArray)
{
    if ([currentString rangeOfString:searchTerm options:NSCaseInsensitiveSearch].location !=  NSNotFound)
    {
        [[self searchResults] addObject:currentString];
    }
}

}

или что-то вроде этого

0 голосов
/ 29 сентября 2011

Судя по получаемой ошибке, [self locationInfo] возвращает массив (NSArray), а не строку (NSString), как вы ожидаете.

...