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

简介:

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

 

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

步骤:

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

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

//
//  NSDictionary+Log.m
//  01-掌握-多值参数和中文输出
//

#import <Foundation/Foundation.h>

// 重写系统的打印方法,
// 需要知道的是NSDictionary和NSArray各自都有打印方法
// 也就是说,你重写了NSArray打印重写方法,打印NSArray对象才会执行重写的方法

// 如果是通过子类来重写父类系统的方法,那么使用的时候就需要导入这个子类
// 但是通过类别重写系统方法,就不需要import导入,因为系统中导入了已经有了同名的被重写的方法了,系统会优先加载类别里的重写的方法,连.h声明文件都可以不用了,因为系统中已经有.h声明文件

@implementation NSDictionary (Log)

//控制输出:对字典或者是数组进行排版
-(NSString *)descriptionWithLocale:(id)locale
{
    NSMutableString *string = [NSMutableString string];
    //设置开始
    [string appendString:@"{\n"];
    
    //设置key-value
    [self enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {
        [string appendFormat:@"%@:",key];
        [string appendFormat:@"%@,\n",obj];
    }];
    //设置结尾
    [string appendString:@"}"];
    
    //删除最后的逗号
    NSRange range = [string rangeOfString:@"," options:NSBackwardsSearch];
    if (range.location != NSNotFound) {
        [string deleteCharactersInRange:range];
    }
    return string;
}

/*
-(NSString *)descriptionWithLocale:(id)locale indent:(NSUInteger)level
{
    NSMutableString *string = [NSMutableString string];
    //设置开始
    [string appendString:@"{"];
    
    //设置key-value
    [self enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {
        
        [string appendFormat:@"%@:",key];
        [string appendFormat:@"%@",obj];
    }];
    //设置结尾
    [string appendString:@"}"];
    return string;
}
 */
@end


@implementation NSArray (Log)

//控制输出:对字典或者是数组进行排版
-(NSString *)descriptionWithLocale:(id)locale
{
    NSMutableString *string = [NSMutableString string];
    //设置开始
    [string appendString:@"["];
    
    //设置key-value
   [self enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
       [string appendFormat:@"%@,",obj];
       
   }];
    //设置结尾
    [string appendString:@"]"];
    
    NSRange range = [string rangeOfString:@"," options:NSBackwardsSearch];
    if (range.location != NSNotFound) {
        [string deleteCharactersInRange:range];
    }
    
    return string;
}

@end

 

相关源码百度云分享链接: http://pan.baidu.com/s/1jGUWkrc 密码: 9yq6

相关文章
|
3天前
|
安全 算法 网络安全
网络安全与信息安全:保护数据,从了解漏洞到强化加密
【5月更文挑战第6天】随着数字化时代的到来,网络安全和信息安全已成为维护个人隐私和企业资产的重要组成部分。本文将深入探讨网络安全的漏洞、加密技术的最新进展以及提升安全意识的重要性。通过对这些关键领域的分析,读者将获得如何有效防御网络威胁和保护敏感信息的知识。
|
2天前
|
Java Linux API
统计android设备的网络数据使用量
统计android设备的网络数据使用量
12 0
|
2天前
|
安全 网络协议 网络安全
网络安全与信息安全:保护你的数据,确保你的安全
【5月更文挑战第7天】在数字化的世界中,网络安全和信息安全是至关重要的。本文将深入探讨网络安全漏洞、加密技术以及安全意识等方面,帮助读者了解如何保护自己的数据和确保自己的网络安全。
|
3天前
|
机器学习/深度学习 监控 数据可视化
R语言SOM神经网络聚类、多层感知机MLP、PCA主成分分析可视化银行客户信用数据实例2
R语言SOM神经网络聚类、多层感知机MLP、PCA主成分分析可视化银行客户信用数据实例
|
3天前
|
机器学习/深度学习 数据可视化 算法
R语言SOM神经网络聚类、多层感知机MLP、PCA主成分分析可视化银行客户信用数据实例1
R语言SOM神经网络聚类、多层感知机MLP、PCA主成分分析可视化银行客户信用数据实例
|
3天前
|
机器学习/深度学习 数据可视化 算法
SPSS Modeler决策树和神经网络模型对淘宝店铺服装销量数据预测可视化|数据分享
SPSS Modeler决策树和神经网络模型对淘宝店铺服装销量数据预测可视化|数据分享
|
3天前
|
机器学习/深度学习 数据可视化 数据挖掘
R语言软件对房屋价格预测:回归、LASSO、决策树、随机森林、GBM、神经网络和SVM可视化|数据分享
R语言软件对房屋价格预测:回归、LASSO、决策树、随机森林、GBM、神经网络和SVM可视化|数据分享
|
3天前
|
监控 安全 网络安全
网络安全与信息安全:保护数据的重要性与方法
网络安全和信息安全是当今社会中不可或缺的话题。本文旨在探讨网络安全漏洞、加密技术和安全意识等方面的知识,以帮助读者更好地理解如何保护个人和机构的数据安全。
12 1
|
3天前
|
Linux 开发工具 Android开发
移动应用与系统:开发与操作系统的深度解析
【5月更文挑战第6天】 在数字化时代,移动应用和操作系统是信息技术的核心组成部分。本文深入探讨了移动应用的开发过程、关键技术以及移动操作系统的架构和功能。通过对这些技术的详细分析,我们可以更好地理解移动应用和系统的工作原理,以及它们如何影响我们的生活和工作。
|
3天前
|
监控 网络架构 负载均衡

推荐镜像

更多