我正在尝试对 NSDictionary 上的 JSON 响应使用区分大小写的大小写,因为有时我的响应键类型会有所不同,有些是驼峰式,有些是小写或其他混合组合。是否有任何内置功能可以检查这种情况下的不敏感情况?
谢谢。
我正在尝试对 NSDictionary 上的 JSON 响应使用区分大小写的大小写,因为有时我的响应键类型会有所不同,有些是驼峰式,有些是小写或其他混合组合。是否有任何内置功能可以检查这种情况下的不敏感情况?
谢谢。
最近我分享了两个可能适合您需求的课程。它们提供不区分大小写的操作(以NSDictionary
和NSMutableDictionary
方法命名),同时保留最初插入的键。
试试看:
https://github.com/keeshux/ios-components/tree/master/Components/Utils/KSCIDictionary
最好的方法是将 NSDictionary 的键设置为全部小写或全部大写;
例如,假设我有一个 NSArray 字符串。我可以在使用之前获取 keyName 并使用小写字符串或大写字符串进行转换
NSString *itemName = @"lastName";
itemName = [itemName lowercaseString];
这会将字符串更改为姓氏,或者如果我使用大写字符串,它将是 LASTNAME
或者您也可以在添加到字典时更改键名,如下所示:
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setObject:objectToAdd forKey:[key uppercaseString]];
- (NSString *)lowercaseString
这是一个默认的 NSString 方法,只需在添加或读取 NSMutableDictionary 时执行 [key lowercaseString]。
就我而言,我不需要所有 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;
}