黑马程序员技术交流社区

标题: 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是可以打印汉字的。
    下面是我的代码,你可以在你的机器上测试下。
  1.    NSArray *persons = @[@{@"name": @"jack"},@{@"books": @[@"我爱中国",@"我爱北京"]}];
  2.     NSString *books = persons[1][@"books"];
  3.     NSNumber *book3 = persons[1][@"books"];
  4.    
  5.     NSString * book = persons[1][@"books"][1];
  6.     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