2

这个网站很棒,我收到了很多回复,所以我尝试编写代码之前遇到的问题

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

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

当我打开 Plist 文件时,输出的顺序仍然不像它那样出现......另外还有一个注意事项是可以在资源文件夹中写入和打开 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 

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

4

3 回答 3

3

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

如果您正在寻找同时维护插入顺序的字典,请查看它是CHDataStructures 框架CHOrderedDictionary的一部分。

于 2010-02-14T02:22:10.743 回答
2

文档中所述,未指定值的顺序。因此,您需要在迭代之前使用NSArray的一种排序方法对键进行排序。

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

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

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

请参阅NSArray 文档以了解对数组(选择器、块等)进行排序的各种方式。

于 2010-02-14T09:37:57.223 回答
1

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

然后你需要对其进行排序。您不能指望字典以任何顺序为您提供其内容,甚至不是您加载或插入它们的顺序。

于 2010-02-14T03:28:51.720 回答