A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 路默” 中级黑马   /  2014-5-5 22:11  /  980 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 路默” 于 2014-5-6 15:14 编辑



NSArray *persons = @[
                                     @{@"name" : @"jim" , @"books" : @[@"我爱中国",@"我爱北京"]},
                                     @{@"name" : @"jack"}
                                    ];
NSString *books = persons[0][@"books"];中文输出改变

NSString *book = persons[0][@"books"][1];为什么中文就能输出?

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

4 个回复

倒序浏览
其实本来给你打好解答了,当时不小心按错了一个键,那些辛辛苦苦打的好多字都没了,哭死
回复 使用道具 举报
下面是我的解答,重新码子打一遍。
    对于这一句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:07

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
D调的沉默 发表于 2014-5-5 22:59
其实本来给你打好解答了,当时不小心按错了一个键,那些辛辛苦苦打的好多字都没了,哭死 ...

辛苦   辛苦  :handshake
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马