2013-12-09 27 views
0

是否有人可以幫助我什麼應該是一個非常基本的問題..用Objective-C的詞典掙扎

的我試着通過與地產板塊的對象(_options)的陣列,以獲取存儲在字典中的值這是我的日誌顯示部分1和3之間

_sections = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"1", @1, @"2", @2, @"3", @3, nil]; 
NSLog(@"sections=%lu",(unsigned long)[_sections count]); 

for(Options *thisOption in _options) 
    { 
    NSString *key = [NSString stringWithFormat:@"%@", thisOption.section]; 
    NSLog(@"key=%@",key); 
    NSNumber *count = [_sections objectForKey:key]; 
    NSLog(@"count=%@",count); 
    } 
= 3,關鍵= 2,但數=(空)

+0

你需要顯示你的問題的選項是什麼意思。 – rdelmar

+0

'NSString * key = [NSString stringWithFormat:@「%@」,thisOption.section];' - thisOption.section'的類型是什麼。如果這是一個整數,那麼你的格式應該是'@「%i」'不是'@「%@」'。 – Snowman

+0

@rdelmar不,他可以在他的輸出中看到該鍵正確設置爲@「2」。看到我的答案。 –

回答

1

你有你的對象,並在dictionaryWithObjectsAndKeys逆轉鍵的順序:。

我建議用文字讓你的代碼有點更清晰:

(假設你的詞典必須是可變的)

NSMutableDictionary *d = [NSMutableDictionary dictionaryWithDictionary:@{@"1": @1, @"2": @2}]; 

(如果您忘記了可變的部分)

NSDictionary *d = @{@"1": @1, @"2": @2}; 
+1

你是對的,但我不確定文字是否真的澄清了這個問題。事實上,方法名稱「-dictionaryWithObjectsAndKeys:」*告訴你*順序,並且OP仍然設法弄錯了。如果'key:object'語法符合您的期望,則文字語法只是直觀的。 – Caleb

+0

@Caleb我添加了文字,因爲即使你是對的,對於大多數開發者來說,你會把對象放在關鍵字之前,這是令人困惑的。這個問題的存在就是布丁的證明。 –

1

您的密鑰是字符串@「2」,但字典中的密鑰是NSNumber 2.這兩個對象不相同,因此當您嘗試使用該密鑰查找對象時,它找不到任何內容和ret甕零。