iOS模型输出和打印
在调试时,我们经常用到输出model,查看数据是否正确,还会在控制台"po 模型"操作,一般输出都是这样的格式的:
person is <Person: 0x608000034300>
这里添加一种解决方法:
1> 解决NSLog(@"person is %@", p)打印model内容:
//
// Person.m
// Demo1
//
// Created by 思 彭 on 2017/7/31.
// Copyright © 2017年 思 彭. All rights reserved.
// #import "Person.h"
#import <objc/runtime.h> @implementation Person // 通过重写模型的description方法,实现打印Model - (NSString *)description { // 初始化一个字典
NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
// 得到当前classs的所有属性
uint count;
objc_property_t *properties = class_copyPropertyList([self class], &count);
for (int i = ; i < count; i++) {
// 循环并用kvc得到每个属性的值
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
return [NSString stringWithFormat:@"<%@: %p> -- %@",[self class], self, dictionary];
}
@end
2>po model输出model内容:
//
// NSObject+DebugDescription.m
// Demo1
//
// Created by 思 彭 on 2017/7/31.
// Copyright © 2017年 思 彭. All rights reserved.
// #import "NSObject+DebugDescription.h"
#import <objc/runtime.h> @implementation NSObject (DebugDescription) - (NSString *)debugDescription {
if ([self isKindOfClass:[NSArray class]] || [self isKindOfClass:[NSNumber class]] || [self isKindOfClass:[NSString class]]) {
return self.debugDescription;
}
// 初始化一个字典
NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
// 得到当前classs的所有属性
uint count;
objc_property_t *properties = class_copyPropertyList([self class], &count);
for (int i = ; i < count; i++) {
// 循环并用kvc得到每个属性的值
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
return [NSString stringWithFormat:@"<%@: %p> -- %@",[self class], self, dictionary];
} @end
使用:
//
// ViewController.m
// Demo1
//
// Created by 思 彭 on 2017/7/31.
// Copyright © 2017年 思 彭. All rights reserved.
// #import "ViewController.h"
#import "Person.h"
#import "NSObject+DebugDescription.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib. Person *p = [Person new];
p.name = @"sis";
p.age = ;
p.habit = @"singer, dancer";
NSLog(@"person is %@", p); // person is <Person: 0x608000034300>
} - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} @end
注意:
在使用控制器类需要导入该Category哟!!!
iOS模型输出和打印的更多相关文章
- iOS中忽略NSLog打印信息(通过PCH文件中定义DEBUG宏解决)
iOS中忽略NSLog打印信息 解决办法: 1.新建PrefixHeader_pch文件,在该文件中定义一下宏 //通过DEBUG宏的定义来解决Debug状态下和Release状态下的输出 #ifde ...
- Assimp场景模型输出Collada,STL,3DPDF
本文介绍开源库模型的几种输出格式:DAE,STL,3DPDF. Assimp是C++写的,AssimpNet是C#重构其中主要数据结构,并开通Assimp中重要方法的调用接口,为不熟悉C++的码农带来 ...
- 又一个高性能轻量级的iOS模型框架YYModel
前言 iOS的模型框架其实有很多了,去年研究过Mantle,也了解过JSONModel.MJExtension,最近的项目项目优化的时候,再次考虑,基于轻量级.高性能的考虑,最终选择了YYModel. ...
- ZeroMQ接口函数之 :zmq_z85_encode – 使用Z85算法对一个二进制秘钥进行加密,输出可打印的文本
ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq-z85-encode zmq_z85_encode(3) ØMQ Manual - ØMQ/4. ...
- IOS: 模型面数控制
你可以先试试 生成之后在虚拟机上运行一下就知道了 不过关键也看手机的好坏 場景 人物 面數的話越少越好(但要保持模型的完整) 貼圖解析度也不要太大 資料越少越好 //================ ...
- iOS 格式化输出符号与类型转换
1.iOS 格式化输出符号 %@ 对象 %d, %i 整数 %u 无符号整形 %f 浮点(双字节) %x, %X 二进制整数 %o 八进制整数 %zi ...
- 【转】JAVA输出内容打印到TXT以及不同系统中如何换行
JAVA输出内容打印到TXT以及不同系统中如何换行 http://xiyang.09.blog.163.com/blog/static/59827615201172552755293/ 2011-08 ...
- 1.java小作业-计算1到100的整合-指定输入多少行输出就打印多少行-打印24小时60分钟每一分钟-重载基础练习-面向java编程初学者
可能有和我一样刚开始学习java的小伙伴们, 可以或多或少了解一点别的语言知识,我就是中途转过来的, 明白一点,关键不在语言本身····· 所以面对初学者来说,基础要学好, 下面列举几个没什么难度的小 ...
- Python中输入和输出(打印)数据
一个程序要进行交互,就需要进行输入,进行输入→处理→输出的过程.所以就需要用到输入和输出功能.同样的,在Python中,怎么实现输入和输出? Python3中的输入方式: Python提供了 inpu ...
随机推荐
- Python求均值,方差,标准差
import numpy as nparr = [1,2,3,4,5,6]#求均值arr_mean = np.mean(arr)#求方差arr_var = np.var(arr)#求标准差arr_st ...
- Python&Selenium借助HTMLTestRunner生成自动化测试报告
一.摘要 本篇博文介绍Python和Selenium进行自动化测试时,借助著名的HTMLTestRunner生成自动化测试报告 HTMLTestRunner.py百度很多,版本也很多,自行搜索下载放到 ...
- 07—mybatis注解配置一
常用注解Select:映射查询的sql语句.SelectProvider:Select语句的动态sql映射.允许指定一个类名和一个方法在执行时返回运行的查询语句.有两个属性:type和mehtod,t ...
- Oracle 连接排序
---左联操作SELECT e.* FROM hs_opt_ewb e left join hs_workform_main m on e.ewb_no=m.ewb_nowhere e.ewb_no= ...
- CSS3 -- column 实现瀑布流布局
本例使用 CSS column 实现瀑布流布局 关键点,column-count: 元素内容将被划分的最佳列数 关键点,break-inside: 避免在元素内部插入分页符 html div.g-co ...
- mysqldump表损坏问题
遇到的问题:mysqldump: Error 1194: Table 'user' is marked as crashed and should be repaired when dumping t ...
- ACM-ICPC 2017 西安赛区现场赛 A. XOR(线性基+线段树)
题目链接:https://nanti.jisuanke.com/t/20749 参考题解:https://blog.csdn.net/Lee_w_j__/article/details/8266418 ...
- RestTemplate发送GET请求
import org.springframework.web.client.RestTemplate; @Component @Slf4j public class JsSdkUtil { /** * ...
- CSS实现太极效果
这个伪元素的位置对齐还妹搞明白 需要再研究研究 <html> <head> <title>taiji</title> <style> b ...
- HGOI 20191106 题解
Problem A 旅行者 有$n$种转移装置,每种转移装置本质相同,每种装置可以前进$a_i$单位,但只有$b_i$个. 从初始坐标为$0$出发,途中不能经过$c_1,c2,...,c_m$中的任 ...