2014-11-02 48 views
-1

我有一個NSDictionary像這樣:對象 - >名,鍵 - >電話號碼(陣列)搜索的NSDictionary值與NSArray的

當用戶搜索,我想基於陣列創建一個新的NSDictionary搜索結果如下:@[@"Anna Haro",@"John Appleseed"];

我知道dictionaryWithValuesForKeys是內置函數,但是如何創建一個新方法dictionaryWithKeysForValues

回答

0

因爲我不是母語爲英語的人我希望我已經正確理解你想要達到的目標。

如果我沒有誤解,你試圖實現的是,例如,如果搜索結果數組包含字符串@"Anna Haro"@"John Appleseed",你想從給定字典中提取相應的鍵,並創建一個新的字典只保存結果數組的字符串,以及字典中對應的鍵,對嗎?

如果這是你正在嘗試做的,你可以做到以下幾點:

{ 
    // resultsArray will represent the NSArray that hold the search results 
    // originalDict will represent the NSDictionary you want to extract the keys from 

    NSMutableDictionary *resultsDict = [[NSMutableDictionary alloc] init]; 

    for (NSString *object in resultsArray) { 
     NSArray *keys = [originalDict allKeysForObject: object]; 

     for (NSArray *key in keys) { 
      [resultsDict setObject: object forKey: key]; 
     } 
    } 
} 

在上面的代碼中,我們首先創建NSMutableDictionary這將是我們新的字典從結果來看,
那麼我們迭代搜索結果數組中的每個對象,
然後我們在原始字典上調用NSDictionary方法allKeysForObject對於數組中的每個對象,它會創建一個NSArray以及與該對象對應的所有鍵,所以如果您有一個對象的幾個鍵,在你的具體的例子,如果我理解正確的話,是一個人的幾個電話號碼數組(儘管我猜它不應該發生),數組將保存所有這些,這就是爲什麼我們的下一步是迭代通過該數組,
最後,我們只是將值和密鑰對添加到新字典中。

就我個人而言,我會設置它的另一種方式,
我會設置電話號碼數組作爲對象,並將人名作爲密鑰。
對我更有意義,我認爲這將更容易獲得,
但這是你的選擇隊友。

我希望能回答你的提問夥伴
祝你好運!

+0

謝謝!我選擇了這種結構,因爲鍵(電話號碼)是唯一的。 – bdv 2014-11-02 11:20:12