美文网首页
iOS模型打印

iOS模型打印

作者: 轮回小飞飞 | 来源:发表于2017-07-31 17:49 被阅读0次
#import <objc/runtime.h>

- (NSString *)description
{
    NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
    uint count;
    objc_property_t *properties = class_copyPropertyList([self class], &count);
    for (int i = 0; i < count; i++)
    {
        objc_property_t property = properties[i];
        NSString *name = @(property_getName(property));
        id value = [self valueForKey:name]?:@"nil";
        [dictionary setObject:value forKey:name];
    }
    
    free(properties);
    return [NSString stringWithFormat:@"<%@:%p> -- %@", [self class], self, dictionary];
    
}

很多时候,我们在断点调试的时候,并不是使用NSLog(@"%@",model);来打印模型,而是通过po这个命令,我们需要重写debugDescription方法而不是description方法

debugDescription方法只会在调试po的时候调用,而在代码中打印不会调用。但是我们需要在每个模型中都重写这个方法,而且代码都不一样,肯定受不了。我的解决方式是写一个NSObject的分类NSObject+DebugDescription并重写debugDescription,并处理了po其他类型的情况

#import "NSObject+DebugDescription.h"
#import <objc/runtime.h>

@implementation NSObject (DebugDescription)

- (NSString *)debugDescription
{
    if ([self isKindOfClass:[NSArray class]] || [self isKindOfClass:[NSDictionary class]] || [self isKindOfClass:[NSNumber class]] || [self isKindOfClass:[NSString class]])
    {
        return self.debugDescription;
    }
    NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
    uint count;
    objc_property_t *properties = class_copyPropertyList([self class], &count);
    for (int i = 0; i < count; i++)
    {
        objc_property_t property = properties[i];
        NSString *name = @(property_getName(property));
        id value = [self valueForKey:name]?:@"nil"; // 默认值为nil字符串
        [dictionary setObject:value forKey:name];
    }
    free(properties);
    return [NSString stringWithFormat:@"<%@: %p> -- %@", [self class], self, dictionary];
}

@end

相关文章

  • iOS模型打印

    很多时候,我们在断点调试的时候,并不是使用NSLog(@"%@",model);来打印模型,而是通过po这个命令,...

  • iOS模型打印

    在开发当中,我们很多时候需要打印模型的所有属性。如果我们直接使用NSLog(@"%@",model);的方式,打印...

  • 关于基本类型的位数(sizeof)

    一、 实践 打印iOS基本数据类型长度(ios12.1) 输出: 原因:因为操作系统选用的数据模型模型不同,导致i...

  • iOS便捷打印模型

    项目中接口返回值可能有几个或者几十个,每次都手动输入就会浪费很多时间,构造了一个便捷打印的方法,需要的同学可以拿去...

  • 光固化3D打印十二生肖模型展示

    为大家展示公司光固化设备DLP 3D打印机打印的十二生肖模型。 以上模型是使用DLP技术的3D打印机打印的,模型细...

  • NSLog打印技巧

    打印包含中文的数组 和 字典 打印模型

  • iOS Wifi 打印

    iOS wifi 打印

  • iOS打印 AirPrint

    使用iOS AirPrint 让你的APP轻松实现打印功能 2016/05/13 · iOS开发 · 打印分享到:...

  • 打印机

    iOS开发之蓝牙/Socket链接小票打印机(一)iOS开发之蓝牙/Socket链接小票打印机(二) iOS so...

  • iOS 8.0+ ~ iOS 11+ SearchControl

    iOS 11+ 的效果: iOS 8+ 的效果 模型 创建Product模型模型.h 文件.png 模型.m 文件...

网友评论

      本文标题:iOS模型打印

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