我有一个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 :(得分:4)
NSDictionaries是无序的,这意味着您无法控制密钥的顺序,并且它们可能会在iOS版本之间随机或以未记录的方式更改。
您有几个选择:
维护您自己独立的NSArray密钥,并使用它来索引您的字典。
使用我编写的这个OrderedDictionary类,它基本上是这样做的,但是在NSDictionary子类中包装它所以你不需要做任何额外的工作:
如果您的字典键是数字(或者它们是按字母顺序排列的,或者其他易于自动排序的字符),您可以在需要按顺序显示它们时对其进行排序:
NSArray *keys = [dict allKeys];
keys = [keys sortedArrayUsingSelector:@selector(compare:)];
//now loop over keys array instead of directly over dictionary