黑马程序员技术交流社区
标题:
Dictionary键值对输出中文
[打印本页]
作者:
路默”
时间:
2014-5-5 22:11
标题:
Dictionary键值对输出中文
本帖最后由 路默” 于 2014-5-6 15:14 编辑
NSArray *persons = @[
@{@"name" : @"jim" , @"books" : @[@"我爱中国",@"我爱北京"]},
@{@"name" : @"jack"}
];
NSString *books = persons[0][@"books"];中文输出改变
NSString *book = persons[0][@"books"][1];为什么中文就能输出?
作者:
D调的沉默
时间:
2014-5-5 22:59
其实本来给你打好解答了,当时不小心按错了一个键,那些辛辛苦苦打的好多字都没了,哭死
作者:
D调的沉默
时间:
2014-5-5 23:03
下面是我的解答,重新码子打一遍。
对于这一句NSString *books = persons[0][@"books"];打印汉字不能识别乱码是因为,程序在运行这句代码的时候会动态监测到books的真实类型为NSDictionary,即使你用了NSString接收。你也可以用NSNUmber接收,你回发现它也可以接收,而且打印的结果也是字典。而字典打印汉字是以Unicode处理的,所以会乱码。
对于NSString *book = persons[0][@"books"][1]可以中文输出,是因为程序动态监测book的真实类型为NSString,而NSString是可以打印汉字的。
下面是我的代码,你可以在你的机器上测试下。
NSArray *persons = @[@{@"name": @"jack"},@{@"books": @[@"我爱中国",@"我爱北京"]}];
NSString *books = persons[1][@"books"];
NSNumber *book3 = persons[1][@"books"];
NSString * book = persons[1][@"books"][1];
NSLog(@"%@ \n %@\n %@",books,book,book3);
复制代码
作者:
路默”
时间:
2014-5-6 01:11
D调的沉默 发表于 2014-5-5 22:59
其实本来给你打好解答了,当时不小心按错了一个键,那些辛辛苦苦打的好多字都没了,哭死 ...
辛苦 辛苦 :handshake
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2