下面是我的解答,重新码子打一遍。
对于这一句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);
复制代码
|