将 NSDictionary 键排序为 NSDate

Posted

技术标签:

【中文标题】将 NSDictionary 键排序为 NSDate【英文标题】:Sort NSDictionary keys as NSDate 【发布时间】:2012-03-02 07:35:48 【问题描述】:

我正在使用最新的 SDK 和 XCode 4.2 开发一个 ios 4 应用程序。

我有一个 NSMutableDictionary,其中 keysNSDatevaluesNSMutableString

当我填满 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的主要内容,如果未能解决你的问题,请参考以下文章

NSDictionary 按键排序为浮点数

排序 NSDictionary

获取按其各自值排序的 NSDictionary 键

避免在 NSDictionary 中排序

按字母顺序对 NSDictionary 值进行排序

NSDictionary:将 NSString 键转换为小写以在其上搜索字符串