Поиск значения словаря в массиве словарей - PullRequest
2 голосов
/ 13 июля 2011

Я пытаюсь найти массив словарей. Каждый словарь имеет разные ключи и значения, такие как Имя, Возраст и Объединение.

Я выполняю поиск на основе учебника по следующему коду:

- (void) searchTableView {

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

for (NSDictionary *dictionary in listOfItems)
{
    NSArray *array = [dictionary valueForKey:@"Name"];
    [searchArray addObjectsFromArray:array];
}

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

    if (titleResultsRange.length != 0)
        [copyListOfItems addObject:sTemp];
}

[searchArray release];
searchArray = nil; }

Поиск идет хорошо, и данные отображаются правильно.

Проблема в том, что когда я выбираю один из результатов, он указывает на неправильное местоположение.

Вот как выбранная строка направляется в подробный вид:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    NSString *selectedName = nil;

    if(searching) 

    selectedName = [copyListOfItems objectAtIndex:indexPath.row];

    else {

        selectedApp = [[dao libraryItemAtIndex:indexPath.row] valueForKey:@"Name"];      
    }

 [self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES];

DetailViewController *controller = [[DetailViewController alloc] initWithAppData:[dao libraryItemAtIndex:indexPath.row] nibName:@"DetailViewController" bundle:[NSBundle mainBundle]];

controller.selectedName = selectedName;

    [self.navigationController pushViewController:controller animated:YES];
    [controller release];  
    [DetailViewController release];

}

Мне нужен способ указать правильное местоположение.

Если бы я мог найти индекс Имени, который я ищу, в основном массиве, это было бы замечательно.

Было бы очень признательно, если бы вы могли помочь мне с этим.

1 Ответ

0 голосов
/ 13 июля 2011

Вы можете создать подкласс UITableViewCell и добавить несколько полей для хранения того, где именно вы нашли то, что отображается в ячейке (например, в каком словаре и в какой позиции в массиве).Тогда вы сможете легко получить это при нажатии на ячейку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...