Извлечение данных из NSMutableDictionary и добавление в другой NSMutableDictionary - PullRequest
0 голосов
/ 27 февраля 2012

НАСТРОЙКА

У меня есть NSMutableDictionary с более чем 800 NSMutableDictionaries в нем, представляющих сотрудников.Я пытаюсь реализовать панель поиска, и у меня возникают серьезные проблемы при работе со своими словарями.

В первом цикле For я создаю словарь для поиска, а при отправке я пытаюсь найти каждого сотрудника в этомсловарь.

ПРОБЛЕМА

Как добавить отдельный словарь в новый словарь для хранения всех словарей с поисковым термином в нем?

- (void) searchTableView:(UISearchBar *)theSearchBar  {

NSString *searchText = theSearchBar.text;
NSMutableDictionary *searchDict = [[NSMutableDictionary alloc] init];

for (NSDictionary *employee in employeeData)
{
    [searchDict setValue:employee forKey:[employee objectForKey:kFULLNAME_TAG]];
}

for (NSDictionary *emp in searchDict)
{
    NSString *empName = [emp objectForKey:kFULLNAME_TAG]; 
    NSRange titleResultsRange = [empName rangeOfString:searchText options:NSCaseInsensitiveSearch];

    if (titleResultsRange.length > 0){
        NSLog(@"search result ---> %@" ,emp);
        [copyListOfItems setValue:empName forKey:emp];
    }
}
}

Во втором цикле For у меня возникли проблемы с copyListOfItems setValue: empName forKey: emp.

1 Ответ

1 голос
/ 27 февраля 2012

Я думаю, что при вставке в ваш copyListOfItems ваши параметры задом наперед (я предполагаю, что это ивар NSMutableDictionary в вашем классе?). Объект employee должен быть значением, а имя сотрудника должно быть ключом.

[copyListOfItems setValue:emp forKey:empName];

Вам не нужно использовать две петли, чтобы выполнить то, что вам нужно. Это было бы проще:

for (NSDictionary *emp in employeeData)
{
    NSString *empName = [emp objectForKey:kFULLNAME_TAG]; 
    NSRange titleResultsRange = [empName rangeOfString:searchText options:NSCaseInsensitiveSearch];

    if (titleResultsRange.location != NSNotFound){
        [copyListOfItems setValue:emp forKey:empName];
    }
}
...