将 NSDictionary 键排序为 NSDate
Posted
技术标签:
【中文标题】将 NSDictionary 键排序为 NSDate【英文标题】:Sort NSDictionary keys as NSDate 【发布时间】:2012-03-02 07:35:48 【问题描述】:我正在使用最新的 SDK 和 XCode 4.2 开发一个 ios 4 应用程序。
我有一个 NSMutableDictionary
,其中 keys 是 NSDate
,values 是 NSMutableString
。
当我填满 NSMutableDictionary 后,我想对其键进行排序,但我不知道该怎么做。
我想要第一个 1 月的日期,然后是 2 月,依此类推。
NSDate
密钥格式为 dd/mm/yyyy。
当NSMutableDictionary
拥有所有键和值时,我如何对这些键进行排序? (我就不多说了)。
【问题讨论】:
您不能对字典进行排序,因为查找是基于键,而不是索引。您需要先将其转换为数组。 从 SO 自己的 Ole Begemann 那里看到这里。该示例用于驱动表格视图,但原则应适用于您的情况。 oleb.net/blog/2011/12/… 这可能是排序的 NSMutableDictionary 的实现:cocoawithlove.com/2008/12/… 【参考方案1】:这是一个非常标准的事情,但是,您不能排序 NSDictionary - 但是您可以对从字典中获得的数组进行排序。
这就是我要做的:
// get all keys into array
NSArray * keys = [your_dictionary allKeys];
// sort it
NSArray * sorted_keys = [keys sortedArrayUsingSelector:@selector(compare:)];
// now, access the values in order
for (NSDate * key in sorted_keys)
// get value
NSMutableString * your_value = [your_dictionary valueForKey: key];
// perform operations
【讨论】:
【参考方案2】:试试这个代码:
NSArray *sortedArray = [[myDict allKeys] sortedArrayUsingSelector:@selector(compare:)];
但请注意,您不能对字典进行排序,因为它是基于键值查找,而不是索引查找。
【讨论】:
好的。使用此代码,我将在另一个数组中对所有键进行排序,然后我可以使用它按顺序访问字典值,不是吗?以上是关于将 NSDictionary 键排序为 NSDate的主要内容,如果未能解决你的问题,请参考以下文章