UISearchBar и TableViewController

У меня был TableView, который работал отлично. Теперь я включил поиск в TableView с SearchBar component and Display ViewController, Я хочу, чтобы поиск производился на основе метки, заполненной NSArray _rotulos.

@property (nonatomic, strong) NSArray *rotulos;

Я заполняю содержимое в моем методе viewDidLoad (объектов больше, но это только пример)

_rotulos = @[@"Item 1", @"Item 2", @"Item 3", @"Block 1", @"Block 2",@"Block 3"];

Я заполняю в моем методе cellForRowAtIndexPath

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"TableCell";
    TableCell *cell = (TableCell *)[self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    //Configure the cell...
       if (cell == nil) {
            cell = [[TableCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        }

    long row = [indexPath row];

    cell.rotuloLabel.text    = _rotulos[row];
    cell.descricaoLabel.text = _vinicola[row];
    cell.uvaLabel.text       = _uva[row];

    return cell;
}

Это отлично работает. У меня проблема при клике в панель поиска и начинаю печатать.

Вот код, который делает этот поиск.

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

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

    return YES;
}

У меня проблема в линии NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"_rotulos contains[c] %@", searchText]; Это мое выходное завершающее приложение из-за неперехваченного исключения "NSUnknownKeyException", причина: "[<__ NSCFConstantString 0x243c8> valueForUndefinedKey:]: этот класс не соответствует значению ключа, соответствующему кодированию для ключа _rotulos".

Я следую этому уроку, но в моем случае _rotulos не является свойством некоторого класса, это NSArray.

Как я могу это исправить? Извините, если забыли что-то опубликовать.

1 ответ

Решение

Вы не можете сформировать этот фильтр, используя predicateWithFormat:, использование predicateWithBlock: или создайте отфильтрованный массив другим способом (т.е. filteredArrayUsingPredicate:).

Другие вопросы по тегам