【问题标题】:Sort NSDictionary keys as NSDate将 NSDictionary 键排序为 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/…

标签: ios sorting nsdate nsdictionary


【解决方案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:)];
    

    但请注意,您不能对字典进行排序,因为它是基于键值查找,而不是索引查找。

    【讨论】:

    • 好的。使用此代码,我将在另一个数组中对所有键进行排序,然后我可以使用它按顺序访问字典值,不是吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    相关资源
    最近更新 更多