我正在尝试在NSDictionary上使用针对JSON响应的incase敏感案例,因为有时候我的响应键类型会有所不同,有些是驼峰式,有些是小写或其他混合组合。在这种情况下是否有内置功能来检查灵敏度不足的情况?
感谢。
答案 0 :(得分:6)
最近我分享了两个可能适合您需求的课程。它们提供不区分大小写的操作(以NSDictionary
和NSMutableDictionary
方法命名),同时保留最初插入的键。
试一试:
https://github.com/keeshux/ios-components/tree/master/Components/Utils/KSCIDictionary
答案 1 :(得分:5)
最好的方法是将NSDictionary的键设置为全小写或全部大写;
例如,假设我有一个NSArray字符串。我可以在使用之前获取keyName并使用lowercaseString或uppercaseString转换它
NSString *itemName = @"lastName";
itemName = [itemName lowercaseString];
这会将字符串更改为lastname,或者如果我使用uppercaseString,则它将是LASTNAME
或者您也可以在添加到字典时更改密钥名称,如下所示:
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setObject:objectToAdd forKey:[key uppercaseString]];
答案 2 :(得分:3)
- (NSString *)lowercaseString
这是一个默认的NSString方法,只需在添加或读取NSMutableDictionary时执行[key lowercaseString]。
答案 3 :(得分:0)
就我而言,我不需要所有的Dictionary方法或属性。我只需要不区分大小写的下标访问。我创建了一个自定义类(不是 NSMutableDictionary的超类)并实现了允许下标访问的方法并使这些不区分大小写:
- (id) objectForKeyedSubscript: (NSString *) key {
NSMutableDictionary *theData = self->data;
return theData[[key lowercaseString]];
}
- (void) setObject: (id) newValue forKeyedSubscript: (NSString *) key {
NSMutableDictionary *theData = self->data;
theData[[key lowercaseString]] = newValue;
}