Objective c NSHTTPPURLResponse allHeaderFields区分大小写

Objective c NSHTTPPURLResponse allHeaderFields区分大小写,objective-c,nsdictionary,key-value-observing,Objective C,Nsdictionary,Key Value Observing,为什么手动创建的-[[NSHTTPURLResponse allHeaderFields]valueForKey:不区分大小写,而手动创建的NSDictionary的valueForKey:不区分大小写 两者似乎都是NSCFDictionary的实例 用变量戳第一个,比方说,内容类型,内容类型,内容类型返回相同的值 手动创建的NSDictionary*a=@{@“内容类型”:@“枕头”}对于除小写“内容类型”以外的任何拼写返回nil 编辑< /强>,当下拉到核心基础级别时,可以很容易地实现这种

为什么手动创建的
-[[NSHTTPURLResponse allHeaderFields]valueForKey:
不区分大小写,而手动创建的
NSDictionary的
valueForKey:
不区分大小写

两者似乎都是NSCFDictionary的实例

用变量戳第一个,比方说,
内容类型
内容类型
内容类型
返回相同的值

手动创建的
NSDictionary*a=@{@“内容类型”:@“枕头”}
对于除小写“内容类型”以外的任何拼写返回
nil


<强>编辑< /强>,当下拉到核心基础级别时,可以很容易地实现这种行为:

< P>它们不都是NSCFDictionary

- (void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse *)response
{
    NSDictionary *dictionary1 = [(NSHTTPURLResponse*)response allHeaderFields];
    NSDictionary *dictionary2 = [NSDictionary dictionaryWithObjects:[dictionary1 allValues] forKeys:[dictionary1 allKeys]];
}
在lldb中:

(lldb) po [dictionary2 class]
__NSDictionaryI
(lldb) po [dictionary1 class]
__NSCFDictionary
而且看起来,拼音键实际上是不区分大小写的0。
类继承对于uu NSCFDictionary来说是如此:
__NSCFDictinary@Daij Djan我拼错了,你是对的。编辑不,实际上我是对的-u NSDictionaryI区分大小写,u NSCFDictionary不区分大小写,因此类名是误导性的;)但是一个普通的dict在任何情况下都不是,他们可以使用自定义的NSString对象,这些对象具有等大小写不敏感的特性,这很奇怪——我正在使用
AFNetworking
在7.0模拟器上测试它(这似乎不是问题)它显示了这两种情况的
\uu NSCFDictionary
。这个答案和我的一样无用:D-实现细节。a但是对福来说是:D
(lldb) po [dictionary1 superclass]
NSMutableDictionary
(lldb) po [[dictionary1 superclass] superclass]
NSDictionary
(lldb) po [dictionary2 superclass]
NSDictionary
NSMutableDictionary *dictionary3 = [dictionary2 mutableCopy];
(lldb) po [dictionary3 class]
__NSDictionaryM
(lldb) po [[dictionary3 class] superclass]
NSMutableDictionary
(lldb) po [[[dictionary3 class] superclass] superclass]
NSDictionary
(lldb) po dictionary3[@"date"]
 nil
(lldb) po dictionary3[@"Date"]
Sun, 01 Dec 2013 13:35:22 GMT