3.IOS数据解析(三)中文输出

1.中文输出

对于服务器返回的数据,解析之后直接打印,如果数据中原本有中文,可能会出现中文乱码的结果:
image.png

为了避免这个问题,可以通过类别来重写系统和打印的结果:
步骤:

1.新创建文件名:Foundation+Log.m后缀的这个文件,对头就是.
m文件
2.然后把一下源码全部拷贝进去就行了

Foundation+Log.m

 1 //
 2 //  NSDictionary+Log.m
 3 //  01-掌握-多值参数和中文输出
 4 //
 5 
 6 #import <Foundation/Foundation.h>
 7 
 8 // 重写系统的打印方法,
 9 // 需要知道的是NSDictionary和NSArray各自都有打印方法
10 // 也就是说,你重写了NSArray打印重写方法,打印NSArray对象才会执行重写的方法
11 
12 // 如果是通过子类来重写父类系统的方法,那么使用的时候就需要导入这个子类
13 // 但是通过类别重写系统方法,就不需要import导入,因为系统中导入了已经有了同名的被重写的方法了,系统会优先加载类别里的重写的方法,连.h声明文件都可以不用了,因为系统中已经有.h声明文件
14 
15 @implementation NSDictionary (Log)
16 
17 //控制输出:对字典或者是数组进行排版
18 -(NSString *)descriptionWithLocale:(id)locale
19 {
20     NSMutableString *string = [NSMutableString string];
21     //设置开始
22     [string appendString:@"{\n"];
23     
24     //设置key-value
25     [self enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {
26         [string appendFormat:@"%@:",key];
27         [string appendFormat:@"%@,\n",obj];
28     }];
29     //设置结尾
30     [string appendString:@"}"];
31     
32     //删除最后的逗号
33     NSRange range = [string rangeOfString:@"," options:NSBackwardsSearch];
34     if (range.location != NSNotFound) {
35         [string deleteCharactersInRange:range];
36     }
37     return string;
38 }
39 
40 /*
41 -(NSString *)descriptionWithLocale:(id)locale indent:(NSUInteger)level
42 {
43     NSMutableString *string = [NSMutableString string];
44     //设置开始
45     [string appendString:@"{"];
46     
47     //设置key-value
48     [self enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {
49         
50         [string appendFormat:@"%@:",key];
51         [string appendFormat:@"%@",obj];
52     }];
53     //设置结尾
54     [string appendString:@"}"];
55     return string;
56 }
57  */
58 @end
59 
60 
61 @implementation NSArray (Log)
62 
63 //控制输出:对字典或者是数组进行排版
64 -(NSString *)descriptionWithLocale:(id)locale
65 {
66     NSMutableString *string = [NSMutableString string];
67     //设置开始
68     [string appendString:@"["];
69     
70     //设置key-value
71    [self enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
72        [string appendFormat:@"%@,",obj];
73        
74    }];
75     //设置结尾
76     [string appendString:@"]"];
77     
78     NSRange range = [string rangeOfString:@"," options:NSBackwardsSearch];
79     if (range.location != NSNotFound) {
80         [string deleteCharactersInRange:range];
81     }
82     
83     return string;
84 }
85 
86 @end
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 179,138评论 25 708
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,627评论 30 472
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 2,069评论 0 9
  • 1.gc 是java垃圾回收机制,垃圾回收机制大部分情况会在线程空闲的时候调用。但是在Java堆内存不足的时候也会...
    leileismile阅读 270评论 0 0
  • 作文班家长课后,儿子说不想上三年级的作文班了。我问他:“为什么,是不喜欢杜老师的课,还是其他原因?”儿子说不...
    何金霖阅读 227评论 0 0

友情链接更多精彩内容