您的位置:首页 > 理论基础 > 计算机网络

iOS开发之网络数据解析--中文输出

2016-03-11 00:00 711 查看
对于服务器返回的数据,解析之后直接打印,如果数据中原本有中文,可能会出现中文乱码的结果:



为了避免这个问题,可以通过类别来重写系统和打印相关的方法。

步骤:

1、新建文件名:Foundation+Log的.m后缀的这一个文件,你没看错,就这个.m文件,不需要.h声明文件

2、然后把以下源码全部拷贝进去即可:

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




相关源码百度云分享链接: http://pan.baidu.com/s/1jGUWkrc 密码: 9yq6
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: