在开发中,我们经常需要打印数组或则字典,以方便调试,但是发现当数组或者字典里面含有中文的时候,打印出来的都是未经转码的字母,解决这个问题就是给字典和数组添加了个分类,并且重写了description方法,下面是.h和.m文件,只要在项目的pch文件导入.h文件就行了.
.h文件
//
// NSDictionary+LOG.h
// shiyan打印
//
// Created by aimee on 16/10/12.
// Copyright © 2016年 aimee. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface NSDictionary (LOG)
@end
@interface NSArray (LOG)
@end
.m文件
//
// NSDictionary+LOG.m
// 06-多值参数
//
// Created by xiaomage on 15/8/22.
// Copyright (c) 2015年 xiaomage. All rights reserved.
//
@implementation NSDictionary (LOG)
// 只要打印一个数组, 或者字典, 系统就会自动调用该方法
- (NSString *)description
{
// 1.定义一个可变的字符串, 保存拼接结果
NSMutableString *strM = [NSMutableString string];
[strM appendString:@"{\n"];
// 2.迭代字典中所有的key/value, 将这些值拼接到字符串中
[self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
[strM appendFormat:@"\t%@ = %@,\n", key, obj];
}];
[strM appendString:@"}"];
// 删除最后一个逗号
if (self.allKeys.count > 0) {
NSRange range = [strM rangeOfString:@"," options:NSBackwardsSearch];
[strM deleteCharactersInRange:range];
}
// 3.返回拼接好的字符串
return strM;
}
@end
@implementation NSArray (LOG)
- (NSString *)description
{
// 1.定义一个可变的字符串, 保存拼接结果
NSMutableString *strM = [NSMutableString string];
[strM appendString:@"(\n"];
// 2.迭代字典中所有的key/value, 将这些值拼接到字符串中
[self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
[strM appendFormat:@"\t%@,\n", obj];
}];
[strM appendString:@")\n"];
// 删除最后一个逗号
if (self.count > 0) {
NSRange range = [strM rangeOfString:@"," options:NSBackwardsSearch];
[strM deleteCharactersInRange:range];
}
// 3.返回拼接好的字符串
return strM;
}
@end