IOS NSLog打印中文封装

作者: 袁俊亮技术博客 | 来源:发表于2017-08-10 00:29 被阅读40次

    IOS NSLog打印中文封装

    标签(空格分隔): IOS


    创建一个Foundation_log.m文件,将以下代码复制进去即可

    
    #import <Foundation/Foundation.h>
    
    @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
    
    

    方法二

    创建一个NSDictionary的分类,然后在.m中加入以下代码

    #import "NSDictionary+Log.h"
    
    @implementation NSDictionary (Log)
    //字典分类中重写系统方法
    -(NSString *)descriptionWithLocale:(id)locale indent:(NSUInteger)level
    {
        //初始化可变字符串
        NSMutableString *string = [NSMutableString string];
        //拼接开头[
        [string appendString:@"["];
    
        //拼接字典中所有的键值对
        [self enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {
                [string appendFormat:@"%@:",key];
                [string appendFormat:@"%@",obj];
          }];
    
        //拼接结尾]
        [string appendString:@"]"];
    
        return string;
    }
    
    @end
    

    相关文章

      网友评论

        本文标题:IOS NSLog打印中文封装

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