【问题标题】:ios array of dictionariesios 字典数组
【发布时间】:2012-03-20 05:11:39
【问题描述】:

我想要一个排序的NSDictionary,但我见过的完成它的方法似乎复杂了。

如果我只做一个NSArrayNSDictionary 怎么办?这样我知道迭代NSDictionary 的顺序。我需要一个订单,因为我正在处理 chronology(数据为一个月中的几天)。

我仍然认为可能有更好的方法,所以我正在求助于专业人士(你们)。

谢谢。

【问题讨论】:

  • 不知道我是否理解。您想按时间顺序对 NSDictionary 的内容进行排序,对吗?也就是说,您想按照包含数据的键的顺序对它们进行排序? NSDictionaries 数组不能解决您的问题。这意味着数组中的每个元素都是 NSDictionary。每个将包含什么?怎么可能排序?我可能会误解你,但我无法理解“字典数组”。
  • 只是将数据设置为字典中对象的键,不是吗?

标签: objective-c ios cocoa-touch nsarray nsdictionary


【解决方案1】:

假设您想对 NSDictionary 的键进行排序,请参阅此 SO 帖子:

Sort an NSMutableDictionary

请注意,它只是从字典中获取键(作为数组)并对数组进行排序。然后,您可以使用排序后的键列表按顺序访问字典条目。

【讨论】:

    【解决方案2】:

    我没有尝试过,但是 NSDictionaryController 支持排序。有一个例子at this link

    OP 希望在一种情况下按键排序,在另一种情况下按值排序。他的问题的答案是这样的:

    NSSortDescriptor *caseInsensitiveDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"key" ascending: YES selector: @selector(caseInsensitiveCompare:)] autorelease];
       [dictionaryController setSortDescriptors: [NSArray arrayWithObject: caseInsensitiveDescriptor]];    
    

    NSDictionaryController 继承自 NSArrayController,并且可能像您考虑的那样实现数组,但它是透明地执行的(您不必编写代码)。

    【讨论】:

      猜你喜欢
      • 2011-11-07
      • 1970-01-01
      • 1970-01-01
      • 2012-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-19
      相关资源
      最近更新 更多