美文网首页
ios控制台中文格式输出数组和字典

ios控制台中文格式输出数组和字典

作者: DSQ | 来源:发表于2021-04-13 11:17 被阅读0次

    创建Foundation+Log.m分类,内部实现代码如下:

    #import <Foundation/Foundation.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
    
    @implementation NSDictionary (Log)
    - (NSString *)descriptionWithLocale:(id)locale indent:(NSUInteger)level
    {
        NSMutableString *mStr = [NSMutableString string];
        NSMutableString *tab = [NSMutableString stringWithString:@""];
        for (int i = 0; i < level; i++) {
            [tab appendString:@"\t"];
        }
        [mStr appendString:@"{\n"];
        NSArray *allKey = self.allKeys;
        for (int i = 0; i < allKey.count; i++) {
            id value = self[allKey[i]];
            NSString *lastSymbol = (allKey.count == i + 1) ? @"":@";";
            if ([value respondsToSelector:@selector(descriptionWithLocale:indent:)]) {
                [mStr appendFormat:@"\t%@%@ = %@%@\n",tab,allKey[i],[value descriptionWithLocale:locale indent:level + 1],lastSymbol];
            } else {
                [mStr appendFormat:@"\t%@%@ = %@%@\n",tab,allKey[i],value,lastSymbol];
            }
        }
        [mStr appendFormat:@"%@}",tab];
        return mStr;
    }
    @end
    
    @implementation NSArray (Log)
    - (NSString *)descriptionWithLocale:(nullable id)locale indent:(NSUInteger)level{
        
        NSMutableString *mStr = [NSMutableString string];
        NSMutableString *tab = [NSMutableString stringWithString:@""];
        for (int i = 0; i < level; i++) {
            [tab appendString:@"\t"];
        }
        [mStr appendString:@"(\n"];
        for (int i = 0; i < self.count; i++) {
            NSString *lastSymbol = (self.count == i + 1) ? @"":@",";
            id value = self[i];
            if ([value respondsToSelector:@selector(descriptionWithLocale:indent:)]) {
                [mStr appendFormat:@"\t%@%@%@\n",tab,[value descriptionWithLocale:locale indent:level + 1],lastSymbol];
            } else {
                [mStr appendFormat:@"\t%@%@%@\n",tab,value,lastSymbol];
            }
        }
        [mStr appendFormat:@"%@)",tab];
        return mStr;
    }
    @end
    

    相关文章

      网友评论

          本文标题:ios控制台中文格式输出数组和字典

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