从 OrderDictionary 获取有序键

Posted

技术标签:

【中文标题】从 OrderDictionary 获取有序键【英文标题】:Getting ordered keys from OrderDictionary 【发布时间】:2013-07-14 18:42:59 【问题描述】:

我看到一些帖子使用this Ordered Dictionary 解决方案以保持 NSDictionary 有序。

它以与我从 json 对象获取它的顺序相同的顺序保存它,但是由于我需要使用 UIPickerView 的值,所以我写了以下内容:

 OrderedDictionary *countryStates = [businessInfo objectForKey:@"allowedStates"];

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
        NSString *stateShort = [countryStates keyAtIndex:row ];
        return [countryStates objectForKey:stateShort];

但是,我得到:

[__NSCFDictionary keyAtIndex:]: unrecognized selector sent to instance 
    为什么我会得到它? 还有什么其他方法可以在不破坏顺序的情况下使用 UIPickerView 的有序字典?

【问题讨论】:

1.因为[businessInfo objectForKey:@"allowedStates"] 只是NSMutableDictionary(如其类所示),而不是OrderedDictionary。 2.我不关注。您将适当的对象设置为它的属性,不要放过它。 谢谢。但是对于 UIPickerView 我需要创建 2 个 NSArray 否? 我不知道。这取决于你如何使用它。请显示更多代码+上下文。 【参考方案1】:

您收到此错误是因为与businessInfo 中的@"allowedStates" 关联的对象只是NSDictionay。您应该使用OrderedDictionary+ (id)dictionaryWithDictionary:(NSDictionary *)dict 方法创建一个新对象,然后对其进行操作。

【讨论】:

你能解释一下你的答案我如何使用dictionaryWithDictionary? @Odelya 你打电话吧。 像这样:OrderedDictionary *orderedCountryStates = [OrderedDictionary dictionaryWithDictionary:[businessInfo objectForKey:@"allowedStates"]]; 我试过你的代码,但实际上这使得原始 NSDictionary 的顺序变得无序 那么我想OrderedDictionary 并没有重新实现它应该实现的所有方法……试试OrderedDictionary *orderedCountryStates = [OrderedDictionary dictionary]; [orderedCountryStates addEntriesFromDictionary:[businessInfo objectForKey:@"allowedStates"]];

以上是关于从 OrderDictionary 获取有序键的主要内容,如果未能解决你的问题,请参考以下文章

spark RDD 上的有序联合

从 Swift (3.1) 表格视图中动态创建的单元格获取有序的文本字段数据

如何从 MySQL 列中缺失的有序值中获取最小值? [复制]

ES6 Map

Angular 的DI机制

如何在模型(或虚拟机)中使用 DI?