Xcode打印中文

585 阅读1分钟

解决Xcode打印 NSArray 和 NSDictionary 乱码的问题(输出中文Log)

1.Xcode9.0之前控制台打印中文方法
#import "NSArray+Log.h"
@implementation NSArray (Log)
 // 只需要在分类中,重写这个方法的实现,不需要导入分类文件就会生效,字典也是一样
- (NSString *)descriptionWithLocale:(id)locale
2.Xcode9.0之后推出了新的API,当你调用这个新的api时,会自动判断以上四种情况来自动的帮助我们转译或做处理.
#import "NSArray+Log.h"

@implementation NSArray (Log)
- (NSString *)descriptionWithLocale:(nullable id)locale indent:(NSUInteger)level{
    
    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:(nullable id)locale indent:(NSUInteger)level{
    
    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

总结:直接添加分类即可,不需要进行引入