【问题标题】:NSArray of NSDictionaries into NSDictionary of NSArraysNSDictionaries 的 NSArray 变成 NSArrays 的 NSDictionary
【发布时间】:2014-03-19 01:03:12
【问题描述】:

我已经根据原始 NSArray 中的 NSDictionaries 中的 keyValue 创建了一个 NSArrays 的 NSDictionary。但是我有一个问题,原始 NSDictionary 中的值都是字符串但包含数字。

这是一个问题的原因是因为我排序的 NSMutableArray 看起来像这样

1
2
3
4
5
6
7
8
9
10
11
12
... etc

问题是它被排序到像这样的数组的 NSDictionary 中

1
10
11
12
2
3
4
5
6
7
8
9

我想知道如何保持在 NSDictionaries 的原始 NSMutableArray 中找到的原始顺序?

这就是我创建数组的 NSDictionary 的方式。

NSMutableDictionary *sortedDictionaryArraysForTableView = [NSMutableDictionary dictionary];

for (NSDictionary *dict in xmlMArray) {
    NSString *currentNumberString = [dict objectForKey:@"Number"];
    if(![[sortedDictionaryArraysForTableView allKeys] containsObject:currentNumberString])
        sortedDictionaryArraysForTableView[currentNumberString] = [NSMutableArray array];
    [sortedDictionaryArraysForTableView[currentNumberString] addObject:dict];
}

【问题讨论】:

  • NSDictionnary 不适用于索引,因此您无法对它们进行排序
  • 我看不出转换为字典有什么帮助,但是使用包含 NSNumericSearch 选项的排序来进行 NSString 比较会有所帮助。

标签: ios objective-c uitableview nsmutablearray nsmutabledictionary


【解决方案1】:

NSDictionary 是一个无序集合。当您将内容存储在字典中时,您无法保留原始顺序(或任何顺序)。对于有序集合,您需要 NSArray 或 NSOrderedSet。

【讨论】:

  • 我认为这是你应该做的来创建一个在分段 UITableView 中使用的对象?
  • 没有。数组数组适用于分段表视图,但由于字典是无序的,因此它们对于存储有序内容永远没有用处。 T(但是,对于您在其中显示的数据和单个单元格来说,嘿,这可能是一个不错的选择。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-25
  • 1970-01-01
  • 1970-01-01
  • 2011-10-31
  • 1970-01-01
相关资源
最近更新 更多