Log的使用技巧——解决字典和和数组的直接打印时问题

来源:互联网 发布:mac os x10.5下载 编辑:程序博客网 时间:2024/05/21 17:08

由于Xcode对打印集合时没有做本地化设置,所以遍历的时候能打印中文字符 当直接打印集合的时候就会就将中文转化为Unicode码。为了解决这个问题,我们分别为NSArray和NSDictionary写两个分类拉进工程即可。

因为打印时,默认是调用从NSObject继承而来的- (NSString *)descriptionWithLocale:(id)locale方法,所以重写这个方法即可。

新建工程代码如下:

分类的.h文件如下:

#import <Foundation/Foundation.h>@interface NSArray (Log)@end@interface NSDictionary (Log)@end
分类的.m文件如下:

#import "NSArray+Log.h"@implementation NSArray (Log)- (NSString *)descriptionWithLocale:(id)locale{    NSMutableString *strM = [NSMutableString stringWithString:@"(\n"];        [self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {        [strM appendFormat:@"\t%@,\n", obj];    }];        [strM appendString:@")"];        return strM;}@end@implementation NSDictionary (Log)- (NSString *)descriptionWithLocale:(id)locale{    NSMutableString *strM = [NSMutableString stringWithString:@"{\n"];        [self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {        [strM appendFormat:@"\t%@ = %@;\n", key, obj];    }];        [strM appendString:@"}\n"];        return strM;}@end
控制器调用如下:

////  ViewController.m//  Log的使用技巧////  Created by apple on 15/10/27.//  Copyright (c) 2015年 LiuXun. All rights reserved.//#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];        /*由于Xcode对打印集合时没有做本地化设置,所以遍历的时候能打印中文字符     当直接打印集合的时候就会就将中文转化为Unicode码     */    NSArray *array = @[@"张三", @"list", @"123"];    NSLog(@"array= %@", array);    for (NSString *str in array) {        NSLog(@"%@", str);    }    }@end
没有新建分类之前,打印结果如下:



新建分类后  后台打印结果如下:


0 0
原创粉丝点击