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的insert简单使用
- Hadoop学习:
文件名称 格式 描述 hadoop-env.sh BaSh 脚本 记 录 脚 本 要 用 的 环 境 变 , 以 运 行Hadoop core-site.xml HadooP配XML Hadoop C ...
- Linux vim 底下显示行号
使用 vim /etc/vimrc 然后进入之后再 set ruler" show the cursor position all the time 底下再加上 set nu 保存退出 :w ...
- Diablo3
1.装备 主手:元素弓 副手:精细箭袋 头: 胸:燃火外套 手:娜塔亚的手感 护腕:稳击护腕 戒指:罗盘玫瑰+布尔凯索的婚戒 颈部:旅者之誓 腰:科雷姆的强力腰带(速度加25%) 腿:深渊挖掘裤 脚: ...
- JPush Wiki
极光推送包含有通知与自定义消息两种类型的推送.本文描述他们的区别,以及建议的应用场景. 功能角度 通知 或者说 Push Notification,即指在手机的通知栏(状态栏)上会显示的一条通知信息. ...
- Android之自定义ViewGroup
概述 在写代码之前,我必须得问几个问题: 1.ViewGroup的职责是啥? ViewGroup相当于一个放置View的容器,并且我们在写布局xml的时候,会告诉容器(凡是以layout为开头的属性, ...
- struts2文件下载,动态设置资源地址
转自:http://blog.csdn.net/ctrl_shift_del/article/details/6277340 ServletActionContext.getServletContex ...
- OD使用心得
查看堆栈 从返回前面的竖线 到 竖线结束 也就是到 (从返回 msconfig.0065a318) 全看.这样不会丢失些东西 或者 看堆栈 直接将堆栈框拉大 避免有些东西没有看到
- Android 用adb pull或push 拷贝手机文件到到电脑上,拷贝手机数据库到电脑上,拷贝电脑数据库到手机上
先说一下adb命令配置,如果遇到adb不是内部或外部命令,也不是可运行的程序或批量文件.配置下环境变量 1.adb不是内部或外部命令,也不是可运行的程序或批量文件. 解决办法:在我的电脑-属性-高级计 ...
- Bean的前身今世&处理器&Aware
出生: <bean>......</bean> 幼年:BeanDefinition bean的接口定义 小学:GenericBeanDefinition 基础的bean映射 ...