关于xcode打印数组或者字典,打印不出中文的解决

在开发中,我们经常需要打印数组或则字典,以方便调试,但是发现当数组或者字典里面含有中文的时候,打印出来的都是未经转码的字母,解决这个问题就是给字典和数组添加了个分类,并且重写了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
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值