2012-02-27 3 views
0

SETUPNSMutableDictionaryからデータを引っ張ると、それは従業員を代表で800以上のNSMutableDictionariesと異なるNSMutableDictionary

私が持っているにNSMutableDictionaryを追加します。私は検索バーを実装しようとしていると私は私の辞書で動作する深刻な問題を抱えています。

最初のForループでは、検索用の辞書が作成され、送信時にその辞書の各従業員を検索しようとしています。私はそれに検索語をすべての辞書を保持するために、新しい辞書に個別の辞書を追加するにはどうすればよい

PROBLEM

? 2番目の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]; 
    } 
} 
} 

、私はcopyListOfItemsのsetValueに問題が午前:のempName forKey:EMPを。

答えて

1

copyListOfItems(あなたのクラスのNSMutableDictionary ivarであると仮定していますか?)に挿入すると、あなたのパラメータが後方にあると思います。従業員オブジェクトは値であり、従業員名はキーでなければなりません。

[copyListOfItems setValue:emp forKey:empName]; 

必要なものを達成するために2つのループを使用する必要はありません。これはより簡単になります:

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