美文网首页
Xcode 8 无法使用插件后,控制台输出中文

Xcode 8 无法使用插件后,控制台输出中文

作者: Kingsleeeey | 来源:发表于2018-01-09 10:50 被阅读0次

    由于 Xcode 8 更新后,第三方插件基本上不能使用。

    控制台输出的数据是Unicode格式,为了方便使用,只需要在项目中新建一个 .m 文件 Foundation+Log.m

    #import <Foundation/Foundation.h>
    #import <UIKit/UIKit.h>
    
    @implementation UIView (Log)
    
    + (NSString *)searchAllSubviews:(UIView *)superview {
        
        NSMutableString *xml = [NSMutableString string];
        
        NSString *class = NSStringFromClass(superview.class);
        
        class = [class stringByReplacingOccurrencesOfString:@"_" withString:@""];
        
        [xml appendFormat:@"<%@ frame=\"%@\">\n", class, NSStringFromCGRect(superview.frame)];
        
        for (UIView *childView in superview.subviews) {
            
            NSString *subviewXml = [self searchAllSubviews:childView];
            
            [xml appendString:subviewXml];
            
        }
        
        [xml appendFormat:@"</%@>\n", class];
        
        return xml;
        
    }
    
    - (NSString *)description
    {
        return [UIView searchAllSubviews:self];
    }
    @end
    
    #pragma mark - 让网络请求回来的中文被unicode编码的数据汉字显示
    
    @implementation NSDictionary (Log)
    
    - (NSString *)descriptionWithLocale:(id)locale {
        NSMutableString *str = [NSMutableString string];
        
        // 开头有个{
        [str appendString:@"{\n"];
        
        // 遍历字典的所有键值对
        [self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
            [str appendFormat:@"\t%@ = %@,\n", key, obj];
        }];
        
        // 结尾有个}
        [str appendString:@"}"];
        
        // 查出最后一个,的范围
        NSRange range = [str rangeOfString:@"," options:NSBackwardsSearch];
        if (range.length) {
            // 删掉最后一个,
            [str deleteCharactersInRange:range];
        }
        
        return str;
    }
    @end
    
    @implementation NSArray (Log)
    
    - (NSString *)descriptionWithLocale:(id)locale {
        NSMutableString *str = [NSMutableString string];
        
        // 开头有个[
        [str appendString:@"[\n"];
        
        // 遍历数组的所有元素
        [self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
            [str appendFormat:@"%@,\n", obj];
        }];
        
        // 结尾有个]
        [str appendString:@"]"];
        
        // 查出最后一个,的范围
        NSRange range = [str rangeOfString:@"," options:NSBackwardsSearch];
        if (range.length) {
            // 删掉最后一个,
            [str deleteCharactersInRange:range];
        }
        
        return str;
    }
    @end
    

    将这段代码放入 Foundation+Log 中就可以实现控制台输出中文而不是Unicode

    相关文章

      网友评论

          本文标题:Xcode 8 无法使用插件后,控制台输出中文

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