美文网首页ios开发整理
IOS中 打印NSDictionary、NSArray时 直接显

IOS中 打印NSDictionary、NSArray时 直接显

作者: hank009 | 来源:发表于2018-07-24 14:12 被阅读213次


iOS中打印中文,一般会被转换为Unicode字符的形式。
针对字典和数组,可通过增加分类,并在分类中重写 descriptionWithLocale: 方法的形式,实现打印结果中直接显示中文。
字典的分类
// 
@implementation NSDictionary (Log)
- (NSString *)descriptionWithLocale:(id)locale
{
    NSMutableString *string = [NSMutableString string];

    // 开头有个{
    [string appendString:@"{\n"];

    // 遍历所有的键值对
    [self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
        [string appendFormat:@"\t%@", key];
        [string appendString:@" : "];
        [string appendFormat:@"%@,\n", obj];
    }];

    // 结尾有个}
    [string appendString:@"}"];

    // 查找最后一个逗号
    NSRange range = [string rangeOfString:@"," options:NSBackwardsSearch];
    if (range.location != NSNotFound)
    [string deleteCharactersInRange:range];

    return string;
}
@end
数组的分类
// 
@implementation NSArray (Log)

- (NSString *)descriptionWithLocale:(id)locale
{
    NSMutableString *string = [NSMutableString string];

    // 开头有个[
    [string appendString:@"[\n"];

    // 遍历所有的元素
    [self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        [string appendFormat:@"\t%@,\n", obj];
    }];

    // 结尾有个]
    [string appendString:@"]"];

    // 查找最后一个逗号
    NSRange range = [string rangeOfString:@"," options:NSBackwardsSearch];
    if (range.location != NSNotFound)
    [string deleteCharactersInRange:range];

    return string;
}
@end

相关文章

网友评论

  • 愤怒的斧王:我这样写,这些方法不会调用。我用的Xcode9.3
    愤怒的斧王:其实不用引入头文件,就即使引入了,也不会调用。
    hank009:没有包含分类的头文件吧??

本文标题:IOS中 打印NSDictionary、NSArray时 直接显

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