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 ...
随机推荐
- MyBatis的foreach语句详解
foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合.foreach元素的属性主要有 item,index,collection,open,separator,close.it ...
- HDU1712周期
ACboy needs your help Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- VS 高亮显示不带后缀的C++头文件
工具-选项-文本编辑器-文件扩展名-勾选“将无扩展名文件映射到(M)” Microsoft Visual C++
- 烟大 Contest1025 - 《挑战编程》第二章:数据结构 Problem A: Jolly Jumpers(水题)
Problem A: Jolly Jumpers Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 10 Solved: 4[Submit][Status] ...
- php 解决和避免form表单重复提交的方法
在提交表单的时候,可能遇到网速等导致页面突然加载变慢,用户重复地点击提交按钮,将在数据库产生多条数据,导致不可控情况. 比如下面的情况就会导致表单重复提交: 点击提交按钮两次. 点击刷新按钮. 使用浏 ...
- ffmpeg 中添加264支持
转自:http://blog.sina.com.cn/s/blog_513f4e8401011yuq.html ffmpeg 中带有264的解码,没有编码,需要添加x264: 参考百度上的“windo ...
- Struts2 Convention插件的使用
转自:http://chenjumin.iteye.com/blog/668389 1.常量说明 struts.convention.result.path="/WEB-INF/conten ...
- Struts2的@ResultPath
转自:http://blog.csdn.net/yandufeng/article/details/8105495 这里我要补充一下:要理解Annotation,最好的方法还是看源码,struts中c ...
- SAE Java相关问题小结
转自:http://blog.csdn.net/bhq2010/article/details/8580412 Sae中使用的servlet容器是jetty7.4.x 我想在web.xml中配置一个自 ...
- Linux常用命令_(基本命令)
基本命令:ls.cd.pwd.man 1.ls 打印当前目录下的文件和目录文件 用法详解:: ls [-alFR] [文件或目录] -a 显示所有文件,包括隐藏文件:[root@qmfsun]#ls ...