Key-Vlaue Coding Apple官方翻译
今天是键值编码,网上有很多文章,可以百度。不太理解的就看官方文档吧
键-值编码
键值编码是一种运用字符串标识符来间接访问一个对象的属性和关系的机制。它尤其强化并关联了多种Cocoa编程的机制和技术,体现在Core Data,应用程序的可接受性,绑定技术,和被声明属性的语言特性当中。(可接受性和绑定特指在OS X当中的cocoa编程)。你也可以用键-值编码的方式来简化你的代码。
对象属性和KVC
键-值编码的核心是属性的通用概念。一个属性指的是一个封装对象的基本单元。属性一般有两种状态:一个属性值(如:name,title,subtitle,或者tixtColor)或者是一种和其他对象的关系。关系又可以是一对一,一对多的。一对多的关系(尤其是数组和集合)的值,取决于关系是有序还是无序的。
键-值编码通过一个字符串标识符也就是键来定位一个对象的属性。一个键通常符合一个存取方法的名字或者对象定义的实例变量(ps:’name’-name;就是’键’-值 的结构)。键必须符合几种条件:键必须是ASCII编码的,以小写字母开头,没有空格。一个键路径是一个由多个点分割开来的字符串,键路径被用来具体说明遍历记录对象的属性队列(company.employee.name)。
属性在序列中的第一个键和具体的对象相关,并且每一个子队列里的键被用来评估与上一个属性相关度。
如何匹配一个类的键值编码
NSKeyValueCoding的非正式协议使得KVC成为可能。它的两个方法—valueForKey:和setValue:forKey: 显得尤为重要,因为它们可以分别获取和设置一个给定键的值。NSObject类提供了这两个方法的默认实现,并且如果一个类符合键-值编码,它就能引用这个实现方法。
如何使得属性的键值编码相符合,取决于属性(资产属性 property)是否是属性(attribute )【1】、是一对一的关系,还是一对多的关系。对于普通的属性或者一对一得关系,类一定会实现至少一个下面给出的有序方法。
1、类声明了一个名为 “key"的属性
2、它实现了名为"key"的访问方法,并且如果属性是可变的,setKey:。(如果属性是一个BOOL值,getter 方法会是isKey)
3、它声明了一个名为key 或者_key的方法。
对于一对多类型的键值编码匹配需要更加复杂的处理。
注【1】翻译property 和 attribute 翻译过来都是属性的意思,property 有资产的意味,一个属性属于某一个类,attribute 属性侧重一个类是某种类型的值。
Key-Vlaue Coding Apple官方翻译的更多相关文章
- 【SFA官方翻译】使用 Kubernetes、Spring Boot 2.0 和 Docker 的微服务快速指南
[SFA官方翻译]使用 Kubernetes.Spring Boot 2.0 和 Docker 的微服务快速指南 原创: Darren Luo SpringForAll社区 今天 原文链接:https ...
- Netty5.x 和3.x、4.x的区别及注意事项(官方翻译)
Netty5.x 和3.x.4.x的区别及注意事项 (官方翻译) 本文档列出了Netty5新版本中值得注意变化和新特性列表.帮助你的应用更好的适应新的版本. 不像Netty3.x和4.x之间的变化 ...
- ST官方翻译的中文应用笔记汇总
ST官方翻译的中文应用笔记汇总 http://www.51hei.com/stm32/3382.html 官方中文AN:AN3116:STM32? 的 ADC 模式及其应用AN1015:用于提高微控制 ...
- iOS key value coding kvc在接收json数据与 model封装中的使用
iOS key value coding kvc在接收json数据与 model封装中的使用 使用 kvc 能够极大的简化代码工作,及以后的接口维护工作: 1:先创建MovieModel类.h和 . ...
- 'NSUnknownKeyException' … setValue:forUndefinedKey:]: …not key value coding compliant
解决一个问题: 当我添加一个IBout, 报了如下错误 NSUnknownKeyException' … setValue:forUndefinedKey:]: …not key value codi ...
- Qt Model/View(官方翻译,图文并茂)
http://doc.trolltech.com/main-snapshot/model-view-programming.html 介绍 Qt 4推出了一组新的item view类,它们使用mode ...
- Apple官方IOS开发入门教程[v0.2]
今天,又跑去找IOS开发入门教程了,结果发现没什么好的PDF. 后来发现,原来苹果官方有开发入门教程,而且写的很好.所以整理出来了,给大家分享一下. 我就不在这里贴pdf的内容了,下面有苹果官方教程的 ...
- Kafka快速上手(2017.9官方翻译)
为了帮助国人更好了解.上手kafka,特意翻译.修改了个文档.官方Wiki : http://kafka.apache.org/quickstart 快速开始 本教程假定您正在开始新鲜,并且没有现有的 ...
- dojo 官方翻译 dojo/_base/lang 版本1.10
官方地址:http://dojotoolkit.org/reference-guide/1.10/dojo/_base/lang.html#dojo-base-lang 应用加载声明: require ...
随机推荐
- myeclipse6.5中使用Alt+/不自动提示的修改
转载自:http://www.cnblogs.com/zhangnanblog/archive/2011/11/10/2244960.html 最近把MyEclipse8.5降到了MyEclipse6 ...
- NEFU 2016省赛演练一 F题 (高精度加法)
Function1 Problem:F Time Limit:1000ms Memory Limit:65535K Description You know that huicpc0838 has b ...
- Buy Tickets(poj 2828)
题意:排队买票,但是 中途 出现插队情况,比如 0 123,代表值为123的人 插入到 0 的位置,如果后面 出现 0 456,那么新的 0的位置就是 456,123就变成是 1的位置了 分析:这道题 ...
- 国密SM4对称算法实现说明(原SMS4无线局域网算法标准)
国密SM4对称算法实现说明(原SMS4无线局域网算法标准) SM4分组密码算法,原名SMS4,国家密码管理局于2012年3月21日发布:http://www.oscca.gov.cn/News/201 ...
- 【Ubuntu14.04.1】设置开机可以Root用户身份登录
$ sudo gedit /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf [SeatDefaults]user-session=ubuntugreet ...
- jar包和war包的区别
jar包和war包的区别: jar包就是别人已经写好的一些类,然后将这些类进行打包,你可以将这些jar包引入你的项目中,然后就可以直接使用这些jar包中的类和属性了,这些jar包一般都会放在lib目录 ...
- Linux运维操作
http://www.it165.net/os/html/201204/1909.html https://i.cnblogs.com/EditPosts.aspx?opt=1 http://www. ...
- 最简单的ngResource使用样码
用来实现基本的RESTful风格的API. 后端用django rest_framework(DRF),前端用AngularJS. app.js var prismVersion = angular. ...
- InputStream的三个read的区别
转自:http://www.blogjava.net/toby/archive/2009/04/24/267413.html 1.read这个方法是对这个流一个一个字节的读,返回的int就是这个字节的 ...
- 拼接JSONStringer出现的不正确的情况。
错误现象: 错误分析及其解答: JSONStringer可以直接嵌套JSONArray,JSONArray可以作为JSONStringer的值.我错误的原因是本质是:JSONArray存放的是JSON ...