2012-02-03 59 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