2012-03-06 41 views
1

我在我的字典中有以下鍵值,我試圖循環遍歷每一行並記錄每個項目,這是可能的使用NSDictionary?Objective C - 使用NSDictionary?

請注意,我的鑰匙不是唯一

Key  Value 
A   1 
B   2 
B   3 
B   4 
C   5 
C   6 
C   7 
D   8 
+2

您的密鑰必須是唯一的,否則您將最終更改由密鑰存儲的值,而不是創建新密鑰。 – 2012-03-06 21:50:54

+0

我不能擁有唯一的密鑰,這就是我的數據結構。是否有相當於哈希映射或類似的東西我可以使用? – aryaxt 2012-03-06 21:53:04

+1

散列圖不能有重複鍵。 – 2012-03-06 21:54:41

回答

3

這可能是壞的方式做到這一點,但如果你的字典是不是太大了,你可以試試:

Key  Value 
1  Array with "A" and "1" 
2  Array with "B" and "2" 
3  Array with "B" and "3" 
//and so on 

然後你就可以輕鬆地遍歷它並記錄你需要(在這種情況下[theArray objectAtIndex:1])什麼。

希望它可以幫助

+0

這正是我最終做的,NSDictionaries的數組。 – aryaxt 2012-03-07 01:06:18

0

NSDictionary你的鑰匙必須是唯一的。從docs

字典中的鍵值對稱爲條目。每個條目 由表示該鍵的一個對象和作爲該鍵的值的第二對象組成。在字典中,密鑰是唯一的。 也就是說,單個字典中沒有兩個密鑰相等(由isEqual :)確定爲 。

一旦你有一個NSDicitonary,您可以用獲得通過按鍵訪問和循環:

- (NSArray *)allKeys 

編輯:

獲得類似功能,請here

這聽起來像它是你正在尋找 乾杯什麼,

+0

這並沒有幫助,因爲鍵不是唯一的,所以每次我詢問鍵的值時,都會返回第一個鍵。 – aryaxt 2012-03-06 21:54:27

+0

對不起,但NSDicitonarys沒有存儲重複密鑰的方法。我正在尋找一個不會爲你使用字典的解決方案。 – 2012-03-06 21:55:58

+0

而且它總是會做同樣的工作 – 2012-03-06 21:56:26

5

在一個詞典中,鍵是獨一無二的。

你必須有每個鍵一個值。

0

如果添加了已經存在於一個NSMutableDictionary關鍵,字典本身只會用新值覆蓋當前鍵的值,而舊的價值將不存在任何進一步的

但是,如果你想通過字典環,看看這篇文章:

looping through an NSMutableDictionary

1

我注意到你的第二個值是相鄰的號碼 - 所以,你確定你不是說要使用NSArray(一個有序列表)含有「A」,「B」,「 B「,」B「,」C「,」C「,」C「,」D「?然後循環:

NSArray* array = [NSArray arrayWithObjects:@"A", @"B", @"B", @"B", @"C", @"C", @"C", @"D", nil]; 
for (NSUInteger i = 0; i < [array count]; i++) 
{ 
    NSUInteger value = i+1; 
    NSString* key = [array objectAtIndex:i]; 
    //Your code here. 
} 
相關問題