OC:断点调试打印自定义模型(展示model属性)

说明
首次发布 2017年06月23日
最近更新 2019年06月08日

背景:在开发中,如果我们直接使用 NSLog(@"%@", model);打印出来只是自定义 model 的内存地址,但我们需要查看模型内的所有属性的值,就需要重写- (NSString *)description- (NSString *)debugDescription

一、 关于 - (NSString *)description- (NSString *)debugDescription 的异同点:

  • 异:
    - (NSString *)description 是从控制台输出,比如 NSLog(@"%@", model);
    - (NSString *)debugDescription 通过断点po打印。
  • 同:
    输出信息是一样的,因为我们都是遍历自定义模型的所有属性。

二、实现:由于我们不想在每个自定义模型里都实现一遍 - (NSString *)description- (NSString *)debugDescription 方法,所以我们可以写到NSObject分类里,一劳永逸。

实现方法: 如果你是用的MJExtesion或YYModel做模型解析,不妨用下面的这种方式。

#import "MJExtension.h"

@implementation NSObject (MZDescription)

#ifdef DEBUG
- (NSString *)description {
    if (self.superclass == [NSObject class]) {
        return [self mj_JSONString];
    }
    return [NSString stringWithFormat:@"<%@: %p>", self.class, self];
}

- (NSString *)debugDescription {
    if (self.superclass == [NSObject class]) {
        return [self mj_JSONString];
    }
    return [NSString stringWithFormat:@"<%@: %p>", self.class, self];
}
#endif

@end
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容