kvc简单实现
时间:2022-04-26
本文章向大家介绍kvc简单实现,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
除了一般的赋值和取值的方法,我们还可以用Key-Value-Coding(KVC)键值编码来访问你要存取的类的属性
kvc: kvc key value coding 键值对编码
可以通过 【实体类1 setValue:值 forKey:键】 来给实体类赋值
假如 实体类1的属性中还包含了一个实体类1 想要在改变类属性的值 可以通过【实体类1 setValue:值 forKeyPath:键】
下边就是详细的实现的过程
分为2部分
1 通过 setValue: forKey 给实体类加上属性的值
首先在Person.h文件中创建出属性
{
NSString *_name;
NSInteger _age;
}
采用这种方式 想说的是这个属性是受保护的但是在viewController中通过这种方法 仍然可以改变他的值 当然 通过属性创建更能够改变啦。
还有就是需要重写 描述方法 方便输出
然后就是ViewController.m中的实现
//创建一个person对象
Person *person = [[Person alloc]init];
[person setValue:@"zhangsan" forKey:@"_name"];
[person setValue:@12 forKey:@"_age"];
NSLog(@"%@",person);
能够看到成功赋值
2 给person添加一个自身的类属性
{
NSString *_name;
NSInteger _age;
Person *_wife;
}
Viewcontroller.m
- (void)viewDidLoad {
[super viewDidLoad];
//创建一个person对象
Person *person = [[Person alloc]init];
[person setValue:@"zhangsan" forKey:@"_name"];
[person setValue:@12 forKey:@"_age"];
//创建出另一个表示wife的person对象 并设置值
Person *wife = [[Person alloc]init];
[wife setValue:@"linda" forKey:@"_name"];
[wife setValue:@12 forKey:@"_age"];
//将设置好的wife当做值加入到person的_wife属性中
[person setValue:wife forKey:@"_wife"];
//将wife的名字年龄做更改
[person setValue:@"lisi" forKeyPath:@"_wife._name"];
[person setValue:@20 forKeyPath:@"_wife._age"];
NSLog(@"%@",person);
}
- JSP开发过程遇到的中文乱码问题及解决方法
- 求连续操作(登录)数量(次数)最大的记录(用户)
- 使用Topshelf创建自宿主的Windows服务程序
- 如何用ORM支持SQL语句的CASE WHEN?
- 条件表达式的短路求值与函数的延迟求值
- 使用CTE解决复杂查询的问题
- WinDbg调试.NET程序入门
- Release编译模式下,事件是否会引起内存泄漏问题初步研究 疑问:
- 10种简单的Java性能优化学习
- 巧用枚举类型,实现项目的多语言切换
- 影响Java调用性能有哪些因素
- 如何为可扩展系统进行Java Socket编程
- 如何使用Windows卷影拷贝服务恢复文件和文件夹
- .net字符串数组查找方式效率比较
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- linux内核写时复制机制源代码解读
- akka-grpc - 应用案例
- Python从入门到大师教程 | 二、搭建Jupyter Notebook环境
- 收益3583万?我是如何快速统计「李子柒」YouTube频道视频累计播放量并计算收益的
- mysql优化篇:where中的like和=的性能分析
- 557. 反转字符串中的单词 III
- 剑指 Offer 03. 数组中重复的数字
- 841. 钥匙和房间
- 一篇文章了解python常见内置异常报错
- 五分钟极速搭建kubernetes集群
- 没想到吧!关于Dubbo的『消费端线程池模型』官网也写错了。
- Go内存管理之代码的逃逸分析
- MySQL读锁的区别和应用场景分析
- Apache NIFI 讲解(读完立即入门)
- 了解NiFi最大线程池和处理器并发任务设置