2012-11-15 133 views
-4

可能重複:
How i can fetch array in xcode?如何通過價值獲得鑰匙?

我怎樣才能獲得通過的關鍵價值?

現在我對密鑰導入值,就像這樣:

NSString *valueStr = [dict objectForKey:@"Key2"]; 

我需要通過價值的關鍵。

+5

爲什麼你會需要這個,我可以看到如何做到這一點的唯一方法是通過所有屬性循環並檢查值。但在我看來,這只是糟糕的設計,絕不應該需要。 – rckoenes

+1

你應該改變你的問題「我如何通過價值獲得鑰匙?」 –

回答

4
for (NSString* key in [dictionary allKeys]) { 
    NSString* value = [dictionary objectForKey:key] 
    if(value equalsToString:@"SearchedValue") { 
     searchedValue = value; 
     keyForSearchedValue = key; 
} 

但是,這不是如何編碼的推薦方式。相反,你應該按鍵搜索,而不是按價值搜索。 請不要爲同一主題創建3個新問題。

+1

'@「鍵」'應該是'鍵'。 – trojanfoe

+0

對,變了。 – Dave

1

這是一個昂貴的操作,因爲NSDictionary(像任何地圖集合類)被設計爲通過鍵保存值。

可以像這樣做,但是,(假設兩個鍵和值NSString):

NSString *wantValue = @"tulips"; 
for (NSString *name in dict) 
{ 
    NSString *value = [dict objectForKey:name]; 
    if ([value isEqualToString:wantValue]) 
    { 
     NSLog(@"name '%@' matches", name); 
    } 
} 
2
NSString *valueStr = ...; 
NSArray *keys = [dict allKeysForObject:valueStr]; 

返回包含具有在字典中的給定值的所有密鑰的陣列。