Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 基于数字重新组织NSDictionary键_Objective C_Ios_Cocoa Touch_Nsdictionary - Fatal编程技术网

Objective c 基于数字重新组织NSDictionary键

Objective c 基于数字重新组织NSDictionary键,objective-c,ios,cocoa-touch,nsdictionary,Objective C,Ios,Cocoa Touch,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;

我有一本字典,看起来像:

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)?

NSDictionary是无序的,这意味着您无法控制键的顺序,并且它们可能在iOS版本之间以随机或未记录的方式更改

您有几个选择:

  • 维护您自己的、单独的NSArray键,并使用它来索引您的字典

  • 使用我编写的这个OrderedDictionary类,它基本上就是这样做的,但它将所有内容封装在一个NSDictionary子类中,因此您不必做任何额外的工作:

  • 如果您的字典键是数字(或者如果它们是字母,或者其他易于自动排序的内容),您可以在需要按顺序显示键时使用以下命令对其进行排序:

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

  • NSDictionary是无序的,这意味着您无法控制键的顺序,并且它们可能在iOS版本之间以随机或未记录的方式更改

    您有几个选择:

  • 维护您自己的、单独的NSArray键,并使用它来索引您的字典

  • 使用我编写的这个OrderedDictionary类,它基本上就是这样做的,但它将所有内容封装在一个NSDictionary子类中,因此您不必做任何额外的工作:

  • 如果您的字典键是数字(或者如果它们是字母,或者其他易于自动排序的内容),您可以在需要按顺序显示键时使用以下命令对其进行排序:

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

  • 为什么不直接使用一个NSMutableArray的NSDictionaires?“重组”我从来没有。为什么不直接使用一个NSMutableArray的NSDictionaires?“重组”我从来没有。