博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Objective C 总结(十一):KVC
阅读量:5158 次
发布时间:2019-06-13

本文共 1320 字,大约阅读时间需要 4 分钟。

KVC提供了以字符串的方式访问对象的数据,由于要解析字符串,所以性能有损耗

- (id) valueForKey: (NSString *) key;- (void) setValue: (id) value forKey: (NSString *) key;- (id) valueForKeyPath: (NSString *) keyPath;- (void) SetValue: (id) value forKeyPath: (NSString *) keyPath;

Objective-C在运行时使用元数据进入对象查找相关的信息,valueForKey:首先,查找以-key或isKey命名的getter方法,如果不存在getter方法,则会去查找_key或key命名的字段。

KVC提供了自动装箱的功能,以对值类型进行操作

// 199进行了装箱NSNumber[somePerson setValue: 199 forKey: @"height"]
// 拆箱 [somePerson valueForKey: @"height"]

获取集合

// 获取两只手的宽度集合NSArray *array = [somePerson valueForKeyPath: @"hands.width"] // array ( 15, 15.5)

进行运算

@count, @sum, @avg, @min, @max, @distinctUnionOfObjects

// 获取hand个数[somePerson valueForKeyPath: @"hands.@count"][somePerson valueForKeyPath: @"hands.@sum.width"][somePerson valueForKeyPath: @"hands.@avg.width"][somePerson valueForKeyPath: @"hands.@min.width"][somePerson valueForKeyPath: @"hands.@max.width"]// 剔除穿着的同一品牌服饰[somePerson valueForKeyPath: @"wears.@distinctUnionOfObjects.brand"]

批处理

- (id) dictionaryWithValuesForKeys: (NSArray *) array;- (void) setValuesForKeysWithDictionary: (NSDictionary *) dictionary;NSArray *keys = @[@"bob", @"smith"];NSDictionary *dictionary = [somePerson dictionaryWithValuesForKeys: keys];[somePerson setValuesForKeysWithDictionary: dictionary];

 

转载于:https://www.cnblogs.com/iprogrammer/p/3247422.html

你可能感兴趣的文章
WHAT I READ FOR DEEP-LEARNING
查看>>
【Ruby】Ruby在Windows上的安装
查看>>
Objective C 总结(十一):KVC
查看>>
BZOJ 3747 洛谷 3582 [POI2015]Kinoman
查看>>
vue实战(7):完整开发登录页面(一)
查看>>
[转载]mysql的left,right,substr,instr截取字符串,截取
查看>>
Visual Studio自定义模板(二)
查看>>
【Mood-20】滴滤咖啡做法 IT工程师加班必备 更健康的coffee 项目经理加班密鉴
查看>>
摘抄详细的VUE生命周期
查看>>
javascript高级程序设计---js事件思维导图
查看>>
sprint计划会议
查看>>
读《构建之法-软件工程》第四章有感
查看>>
使用 Printf via SWO/SWV 输出调试信息
查看>>
.net 分布式架构之分布式锁实现(转)
查看>>
吴恩达机器学习笔记 —— 3 线性回归回顾
查看>>
Bouncy Castle内存溢出
查看>>
多线程_java多线程环境下栈信息分析思路
查看>>
机器学习数学【1】
查看>>
Problem E: Automatic Editing
查看>>
Java数组排序
查看>>