在使用NSArray打印的时候如果遇到中文字符那么会打印出来编码,如下代码:
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. NSArray *array = @[@"张三",@"lisi",@"123"]; NSLog(@"%@",array); // }
运行之后:
2015-09-29 12:37:35.713 03-log的技巧[2233:66890] ( "U5f20U4e09", lisi, 123 )
这里的“张三”就被打印成了"U5f20U4e09”(注:利用for循环遍历是不会出现这个问题的)。如果我们需要解决这个问题,那么我们就需要给NSArray写一个分类,来进行更改,代码如下:
#import "NSArray+Log.h" @implementation NSArray (Log) /** * 根据设置的本地化数据设置数组 * * 由于我们在打印这个数组的时候,如果遇到有中文的时候它打印出来的是编码格式,而不是中文文字(for循环遍历除外) * 这个时候如果我们想让它能正常显示的话,我们就需要重写这个方法。 * @return <#return value description#> */ -(NSString *)descriptionWithLocale:(id)locale { // 1.首先拼接一个括号 我们的目的是让数组打印出来的时候和系统打印的格式一致。 /** ( zhangsan, lisi, wangwu ) */ NSMutableString *mutabStr = [NSMutableString stringWithString:@"( "]; [self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { [mutabStr appendFormat:@" %@, ",obj]; }]; [mutabStr appendFormat:@")"]; return mutabStr; } @end
此时打印出的结果是:
2015-09-29 12:41:54.894 03-log的技巧[2272:68398] ( 张三, lisi, 123, )