从 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 获取有序键的主要内容,如果未能解决你的问题,请参考以下文章
从 Swift (3.1) 表格视图中动态创建的单元格获取有序的文本字段数据