您的位置:首页 > Web前端 > JavaScript

如果JSON数据中有中文,输出Unicode编码,无法识别解决办法

2016-08-06 09:58 507 查看

NSLog+NSArray

问题

如果JSON数据中有中文,输出的是经过Unicode编码的内容,无法识别.



解决

定义NSArray和NSDictionary的分类,重写系统方法
descriptionWithLocale
,重写此方法不需要导入头文件.
descriptionWithLocale
,当NSLog输出数组或字典时,系统会自动调用这个方法.

descriptionWithLocale
方法中,遍历元素,并打印元素.

声明

#import <Foundation/Foundation.h>

@interface NSArray (Log)

@end

@interface NSDictionary (Log)

@end

实现
#import "NSArray+Log.h"

@implementation NSArray (Log)

/// 打印数组和字典时会自动调用这个方法,在分类中重写这个方法时,在使用时不需要导入头文件

- (NSString *)descriptionWithLocale:(id)locale
{
// 创建可变字符串
NSMutableString *stringM = [NSMutableString string];
// 拼接开头
[stringM appendString:@"(\n"];
// 遍历出元素,拼接中间的内容部分
[self enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
[stringM appendFormat:@"\t%@,\n",obj];
}];
// 拼接结尾
[stringM appendString:@")\n"];

return stringM;
}

@end

@implementation NSDictionary (Log)

- (NSString *)descriptionWithLocale:(id)locale
{
// 创建可变字符串
NSMutableString *stringM = [NSMutableString string];
// 拼接开头
[stringM appendString:@"{\n"];
//  遍历出元素,拼接中间的内容部分
[self enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {
[stringM appendFormat:@"\t%@ = %@;\n",key,obj];
}];
// 拼接结尾
[stringM appendString:@"}\n"];

return stringM;
}

@end


提示 :

一个文件中其实是可以定义多个类的声明和实现的

使用 : 把这个文件放进工程中即可,今后无论打印数组还是字典,都可以看到原始的中文.不需要导入头文件.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: