2012-02-27 1 views
0

НАСТРОЙКАИзвлечение данных из NSMutableDictionary и добавления к другому NSMutableDictionary

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

В первом для Loop i cread есть словарь для поиска, а в send я пытаюсь искать каждого сотрудника в этом словаре.

ПРОБЛЕМА

Как я могу добавить отдельный словарь в новый словарь, чтобы держать все словари с термином для поиска в нем?

- (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 Loop, у меня возникли проблемы с copyListOfItems SetValue: EmpName forKey: эми.

ответ

1

Я думаю, что у вас есть свои параметры в обратном направлении при вставке в ваш copyListOfItems (который я предполагаю в качестве класса NSMutableDictionary ivar в вашем классе?). Объект 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]; 
    } 
} 
+0

Прошу прощения и дайте знать, как это происходит, спасибо – zach