美文网首页iOS 开发iOS劝退指南iOS Developer
【iOS 开发】解决 Xcode 输出台打印 NSArray 数

【iOS 开发】解决 Xcode 输出台打印 NSArray 数

作者: 爱吃鸭梨的猫 | 来源:发表于2017-07-05 12:00 被阅读802次
    Xcode

    最近在调试的时候发现 Xcode 直接打印 NSArray 数组和 NSDictionary 字典的时候,如果其中有中文,打印出来就变成乱码了,调试起来很不舒服,下面就分享一下解决办法。


    解决方法

    其实很简单,只要为 NSArray 数组和 NSDictionary 字典各创建一个分类即可,并且只需要创建,无需引用或者调用。

    1. NSArray 数组

    数组打印结果对比

    • 打印以下数组内容:
    NSArray *array = @[@"张三", @"李四", @"王五"];
    NSLog(@"%@", array);
    
    • 未创建分类之前的数组打印结果:
    2017-07-05 11:38:30.058 Test[8402:224709] (
        "\U5f20\U4e09",
        "\U674e\U56db",
        "\U738b\U4e94"
    )
    
    • 创建分类后的数组打印结果:
    2017-07-05 11:44:23.009 test[8528:231831] (
        张三,
        李四,
        王五
    )
    

    数组分类创建内容

    NSArray+Log.h
    #import <Foundation/Foundation.h>
    
    @interface NSArray (Log)
    
    @end
    
    NSArray+Log.m
    #import "NSArray+Log.h"
    
    @implementation NSArray (Log)
    
    /**
     解决数组输出中文乱码的问题
    
     @return 输出结果
     */
    - (NSString *)descriptionWithLocale:(id)locale {
        
        NSMutableString *string = [NSMutableString stringWithString:@"(\n"];
        [self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
            
            [string appendFormat:@"\t%@,\n", obj];
        }];
        if ([string hasSuffix:@",\n"]) {
            
            [string deleteCharactersInRange:NSMakeRange(string.length - 2, 1)]; // 删除最后一个逗号
        }
        [string appendString:@")\n"];
        
        return string;
    }
    
    @end
    

    2. NSDictionary 字典

    字典打印结果对比

    • 打印以下字典内容:
    NSDictionary *dictionary = @{@"姓名1" : @"张三",
                                 @"姓名2" : @"李四",
                                 @"姓名3" : @"王五"};
    NSLog(@"%@", dictionary);
    
    • 未创建分类之前的字典打印结果:
    2017-07-05 11:38:30.059 test[8402:224709] {
        "\U59d3\U540d1" = "\U5f20\U4e09";
        "\U59d3\U540d2" = "\U674e\U56db";
        "\U59d3\U540d3" = "\U738b\U4e94";
    }
    
    • 创建分类后的字典打印结果:
    2017-07-05 11:44:23.009 test[8528:231831] {
        姓名1 = 张三;
        姓名2 = 李四;
        姓名3 = 王五;
    }
    

    字典分类创建内容

    NSDictionary+Log.h
    #import <Foundation/Foundation.h>
    
    @interface NSDictionary (Log)
    
    @end
    
    NSDictionary+Log.m
    #import "NSDictionary+Log.h"
    
    @implementation NSDictionary (Log)
    
    /**
     解决字典输出中文乱码的问题
    
     @return 输出结果
     */
    - (NSString *)descriptionWithLocale:(id)locale {
        
        NSMutableString *string = [NSMutableString stringWithString:@"{\n"];
        [self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
            
            [string appendFormat:@"\t%@ = %@;\n", key, obj];
        }];
        [string appendString:@"}\n"];
        
        return string;
    }
    
    @end
    

    将来的你,一定会感激现在拼命的自己,愿自己与读者的开发之路无限美好。

    我的传送门: 博客简书微博GitHub

    相关文章

      网友评论

      本文标题:【iOS 开发】解决 Xcode 输出台打印 NSArray 数

      本文链接:https://www.haomeiwen.com/subject/cfzfhxtx.html