iOS开发之网络数据解析--中文输出
2016-03-11 00:00
696 查看
对于服务器返回的数据,解析之后直接打印,如果数据中原本有中文,可能会出现中文乱码的结果:
为了避免这个问题,可以通过类别来重写系统和打印相关的方法。
步骤:
1、新建文件名:Foundation+Log的.m后缀的这一个文件,你没看错,就这个.m文件,不需要.h声明文件
2、然后把以下源码全部拷贝进去即可:
相关源码百度云分享链接: http://pan.baidu.com/s/1jGUWkrc 密码: 9yq6
为了避免这个问题,可以通过类别来重写系统和打印相关的方法。
步骤:
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
相关文章推荐
- iOS开发之网络编程--5、NSURLSessionUploadTask+NSURLSessionDataDelegate代理上传
- iOS开发之网络编程--6、NSURLSessionConfiguration笔记
- 网络请求的基本知识《极客学院 --AFNetworking 2.x 网络解析详解--1》学习笔记
- iOS开发网络篇—NSURLConnection基本使用(二)
- GET/POST请求的使用《极客学院 --AFNetworking 2.x 网络解析详解--2》学习笔记
- iOS开发之网络数据解析(二)--XML解析简介
- iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载+使用输出流代替文件句柄
- iOS开发之网络编程--小文件下载
- iOS开发网络篇—GET请求和POST请求
- iOS开发之网络数据解析(一)--JSON解析简介
- iOS开发网络篇—网络编程基础(二)
- iOS开发之网络编程--4、NSURLSessionDataTask实现文件下载(离线断点续传下载) <进度值显示优化>
- iOS开发之网络编程--XCode7 更新以来需要手动设置的内容
- 对比iOS网络组件:AFNetworking VS ASIHTTPRequest
- iOS开发之网络数据解析--GDataXML解析框架的使用
- iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载
- IOS网络编程要学习的框架
- IOS开发之网络编程--文件压缩和解压缩
- iOS开发网络篇—HTTP协议
- iOS开发之网络编程--获取文件的MIMEType