iOS解决NSArray、NSDictionary打印乱码问题

原来打印

dict = {
key1 = abc;
key2 = "\U4e2d\U6587";
} 

array = (
abc,
"\U4e2d\U6587"
)

使用方法:将 NSArray+Extension 和 NSDictionary+Extension 两个分类拖入项目即可

打印效果 :

2015-08-08 10:19:36.294 ICUnicodeDemo[2135:50801]

dict = {
key1 = abc,
key2 = 中文
} 


array = [
abc,
中文
]

代码git:https://github.com/icoder20150719/ICUnicodeDemo

解释

  • (void)viewDidLoad {
    [super viewDidLoad]; //创建字典 NSDictionary *dict = @{@"key1" : @"abc", @"key2" : @"中文", };
    //创建数组
    NSArray *array = @[@"abc",@"中文"];
    //打印数组和字典 NSLog(@" \n dict = %@ \n array = %@",dict,array);
    }
    后台打印:
0D0F13E7-9592-4B53-A838-120180E7EF5C.png
B20B2D00-D229-4962-9C3D-7E171C87E202.png

字典和数组中都出现了Unicode编码字符串问题 ,无法显示出中文

思考字典和数组在打印的过程中分别会调哪些方法:
1、重写系统数组的几个返回字符串的方法

EC3D8956-0F51-4004-B1F5-36F0BCAA7091.png

2、打上短点

690812A6-9CC7-475F-AF10-6AA017E86C3F.png

断点停在 -(NSString *)descriptionWithLocale:(id)locale
过掉断点
3、后台打印: array = descriptionWithLocale

F35D47F7-BA8C-4688-A80A-E06E929C4C7F.png

证明:数组在打印时会调用descriptionWithLocale来把自己格式化成字符串 ;
自定义数组格式化descriptionWithLocale 返回字符串


96647E23-6798-4C38-9877-F36A7F74F59D.png

字典同理:


现在看看后台打印效果:

ECC19C65-7A40-4DBF-A3C4-06B4ADC3C38E.png

代码git:https://github.com/icoder20150719/ICUnicodeDemo


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、深复制和浅复制的区别? 1、浅复制:只是复制了指向对象的指针,即两个指针指向同一块内存单元!而不复制指向对象的...
    iOS_Alex阅读 5,286评论 1 27
  • 好久好久没写过文章了,经常会,提笔忘字。。 这几年,貌似很忙,却没有忙出自己一直向阳的生活,觉得自己过的不够痛快,...
    黑色幽默精灵阅读 1,313评论 0 0
  • 文/铁炉 -01- 这样一边吃着披萨、喝着可乐、看...
    湘邵铁炉阅读 4,030评论 5 11