6

我正在尝试对 NSDictionary 上的 JSON 响应使用区分大小写的大小写,因为有时我的响应键类型会有所不同,有些是驼峰式,有些是小写或其他混合组合。是否有任何内置功能可以检查这种情况下的不敏感情况?

谢谢。

4

4 回答 4

6

最近我分享了两个可能适合您需求的课程。它们提供不区分大小写的操作(以NSDictionaryNSMutableDictionary方法命名),同时保留最初插入的键。

试试看:

https://github.com/keeshux/ios-components/tree/master/Components/Utils/KSCIDictionary

于 2012-06-23T09:18:42.267 回答
5

最好的方法是将 NSDictionary 的键设置为全部小写或全部大写;

例如,假设我有一个 NSArray 字符串。我可以在使用之前获取 keyName 并使用小写字符串或大写字符串进行转换

NSString *itemName = @"lastName"; 
itemName = [itemName lowercaseString];

这会将字符串更改为姓氏,或者如果我使用大写字符串,它将是 LASTNAME

或者您也可以在添加到字典时更改键名,如下所示:

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setObject:objectToAdd forKey:[key uppercaseString]];
于 2012-05-24T00:48:46.563 回答
3
- (NSString *)lowercaseString

这是一个默认的 NSString 方法,只需在添加或读取 NSMutableDictionary 时执行 [key lowercaseString]。

于 2012-05-24T00:36:07.050 回答
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;
}

另见: http ://clang.llvm.org/docs/ObjectiveCLiterals.html

于 2013-07-12T04:44:44.687 回答