NSDictionary - 打印数组

时间:2010-02-14 02:16:24

标签: objective-c cocoa sorting macos nsdictionary

这个网站很棒,我收到了很多回复,所以我试着在此之前对我遇到的问题进行编码

NSMutableArray *sort = [NSMutableArray arraywithArray:[dic allValues]]; 

for(NSString *s in sort){
    [Purchases appendString:[NSString stringWithFormat:@"%@",s]]; 
} 
textview.text = Purchases; 

输出的顺序仍然不像我打开Plist文件时那样 另外一个注意事项是,可以在Resources文件夹中编写和打开plist文件,而不是......

感谢您的帮助!

编辑:

2010-02-12 23:54:35 -0500 
2010-02-12 23:29:11 - 0500 
2010-02-12 23:54:42 - 0500 
2010-02-12 23:54:58 - 0500  

这就是我得到的订单^^

但是当我打开plist文件时,订单是:

2010-02-12 23:29:11 -0500 
2010-02-12 23:54:35 -0500 
2010 02-12 23:54:42 - 0500 
2010 02-12 23:54:58 - 0500 

^^这是我想要的顺序,除了下降

3 个答案:

答案 0 :(得分:3)

[dic allValues]不会以任何可靠的顺序返回密钥。它使用下面的一个集合,这意味着它是无序的。

如果您正在查找同时维护广告订单的词典,请查看CHOrderedDictionary中{{1}}的一部分。

答案 1 :(得分:2)

根据指定in the documentation,未指定值的顺序。因此,您需要在迭代之前使用NSArray之一的排序方法对键进行排序。

例如,此代码将按升序对字符串值进行排序:

NSArray *sort = [[dic allValues] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];

for(NSString *s in sort){
    [Purchases appendString:[NSString stringWithFormat:@"%@",s]]; 
} 
textview.text = Purchases; 

请参阅NSArray documentation以了解有关排序数组(选择器,块等)的各种方法。

答案 2 :(得分:1)

  

我想按降序显示它(最新的日期时间首先)......

然后你需要sort it。你不能指望以任何顺序给你内容的字典,甚至不是你加载或插入它们的顺序。