2012-02-03 53 views
0

我有一個的NSDictionary,它看起來像:Reorganizate的NSDictionary鍵

0 =  { 
     content = Test; 
     date = "2012-02-02 18:36:46 +0000"; 
    }; 
    1 =  { 
     content = "#### da ####"; 
     date = "2012-02-02 18:36:46 +0000"; 
    }; 
    2 =  { 
     content = dfdffdfddfdffddf; 
     date = "2012-02-03 20:30:31 +0000"; 
    }; 

但是,如果我刪除(在實施例編號1)的第二密鑰的所述字典結束等:

0 =  { 
    content = Test; 
    date = "2012-02-02 18:36:46 +0000"; 
}; 
2 =  { 
    content = dfdffdfddfdffddf; 
    date = "2012-02-03 20:30:31 +0000"; 
}; 

我該如何重組它們,以便在需要時維護訂單(如0,1,2,3)?

+0

http://cocoawithlove.com/2008/12/ordereddictionary-subclassing-cocoa.html – vikingosegundo 2012-02-03 20:41:32

+0

爲什麼不直接使用NSDutableaires的NSMutableArray? – Intentss 2012-02-03 20:48:18

+0

「重組」,我從來沒有。 – Fogmeister 2013-02-02 17:47:17

回答

4

NSDictionaries是無序的,這意味着您無法控制鍵的順序,並且它們可能會隨機更改或以iOS文檔之間的非文檔方式更改。

您有幾種選擇:

  1. 保持按鍵的自己的,獨立的NSArray,並用它來索引你的字典。

  2. 使用此OrderedDictionary類,我寫的,基本上這是否但是在一個NSDictionary子類都結束了,所以你不必做任何額外的工作:

    http://charcoaldesign.co.uk/source/cocoa#ordered-dictionary

  3. 如果你的字典鍵是數字(或者,如果他們是字母,還是其他什麼東西,很容易自動排序),你可以只只要你需要,以顯示他們使用的按鍵排序:

    NSArray *keys = [dict allKeys]; 
    keys = [keys sortedArrayUsingSelector:@selector(compare:)]; 
    //now loop over keys array instead of directly over dictionary