2015-04-03 40 views
0

我已創建NSMutableDictonaryNSMutableDictonary是否總是按字母順序排序鍵?

Screenshot

的問題是,我正在整理成按字母順序排列的所有密鑰。這是爲什麼?

我剛纔注意到了這一點(以前從未檢查過)。這是NSMutableDictonary的實際執行嗎?有沒有什麼辦法可以按照我宣佈的順序獲取關鍵字/值?

下面的截圖中的代碼:

- (IBAction)OnBtnSubmit:(id)sender { 
    NSString *strUid=[[NSUserDefaults standardUserDefaults] objectForKey:@"UID"]; 
    NSString *picData=[self imageToNSString:ProfileImage.image]; 
    NSString *strComment=_commentTxt.text; 
    NSString *strUnit=_unitTxt.text; 

    NSMutableDictionary *parameters =[NSMutableDictionary dictionaryWithObjectsAndKeys:strUid,@"uid",strComment,@"comment",strUnit,@"unit_donate",@"hi",@"image",nil]; 

    NSLog(@"parameters : %@",parameters); 

我擔心的是,我能得到我已經宣佈鍵/順序值?

象下面這樣:

NSMutableDictionary *parameters =[NSMutableDictionary dictionaryWithObjectsAndKeys:strUid,@"uid",strComment,@"comment",strUnit,@"unit_donate",@"hi",@"image",nil]; 

{ 
    uid = 85; 
    comment= test; 
    unit_donate = 1; 
    image=hi; 
} 

我需要這個確切順序在網絡上到底有存儲所有這些鍵的值的數組。我需要確保image將永遠處於第四位。

但我很好奇知道,我已經記錄了我創建的字典;爲什麼它按字母順序顯示?這是我的字典存在的實際順序還是有其他原因?

+0

字典未訂購。如果你想以這種方式排序,你應該使用NSArray。爲什麼你需要鍵值類型訪問和任意順序? – Jef 2015-04-04 12:27:24

回答

0

我很確定字典沒有跟蹤輸入順序。你如何輸出字典,循環鍵或只是打印字典?

如果你知道你想要檢索對象的順序,你可以通過創建自己的鍵數組和循環的版本拔出從字典中的對象在你需要的順序

更多細節問題請查看dictionary works

2

是的,它會是這樣的。但無論順序是什麼,它都不應該關注你的邏輯,因爲你總是要取得關鍵的價值而不是基於訂單。