IOS 学习 Key-value coding
1 前言
本节我们主要介绍键值编码,以及如何使一个类符合KVC编码。
2 详述
键-值编码是一个对于间接访问一个对象属性和关系使用字符标识的机制。它支持或者关系几个特别的Cocoa编程机制和技术,在Core Data,application scriptability,绑定技术(application scriptability和绑定技术特属于OS X)和声明属性的语言特性中。我们也能够使用键值编码简化我们的程序代码。
2.1 对象属性和KVC
对于key-value编码(或者KVC)的核心是属性的普通概念。一个涉及将对象压入状态单元的属性。一个属性能够成为两种普通类型的一种:一个属性(例如:name,title)或者一个与其他对象的关系。关系可以是对一的或者是对多的。对多关系的值的典型代表为数组(array)或者集合(set),依赖于是否关系是有序的或者无序的。
KVC通过一个字符串标示的key来定位一个对象属性。key通常符合被对象所定义的存储方法的名称或者实例变量。key必须符合固定的惯例:必须为ASCII编码,开始以小写字母,没有空格。key path是一个字符串被点分割的字符串keys被用于简化对象属性的序列的遍历。属性的序列的first key关联了一个简单的对象(employee1在下面的图形中),随后的key是关联的前面的值的属性。
2.2 使一个类符合KVC编码
NSKeyValueCoding非正式协议使KVC称为可能。它的两个方法-valueForKey:和setValue:forKey:-是特别重要的因为他们当提供key的时候会获得和设置一个属性值。NSObject提供了一个默认的这些方法的实现,并且当一个类服从了键值编码,它能够依赖于这一实现
我们如何能使得一个属性符合KVC编码依赖于是否这些属性是对象的属性,对一关系,或者对多的关系。对于这些属性和关系,一个类必须符合至少以下的一条(key相当于property key):
(1)使用名字key,类有一个声明属性;
(2)它实现了存储方法称为key并且,如果属性可变,setKey:(如果属性是一个Boolean属性,getter存储方法拥有isKey的格式);
(3)它声明了以key或者_key的形式的一个实例变量。
对于一对多关系实现KVC格式是更复杂的步骤。
3 结语
以上是所有内容,希望对大家有所帮助。
IOS 学习 Key-value coding的更多相关文章
- iOS key value coding kvc在接收json数据与 model封装中的使用
iOS key value coding kvc在接收json数据与 model封装中的使用 使用 kvc 能够极大的简化代码工作,及以后的接口维护工作: 1:先创建MovieModel类.h和 . ...
- IOS学习笔记48--一些常见的IOS知识点+面试题
IOS学习笔记48--一些常见的IOS知识点+面试题 1.堆和栈什么区别? 答:管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制:对于堆来说,释放工作由程序员控制,容易产生memor ...
- 【原】iOS学习47之第三方-FMDB
将 CocoaPods 安装后,按照 CocoaPods 的使用说明就可以将 FMDB 第三方集成到工程中,具体请看博客iOS学习46之第三方CocoaPods的安装和使用(通用方法) 1. FMDB ...
- 黑苹果-IOS学习的开始
深知安装黑苹果的不易,在这里写一下关于我的Thinkpad E430c安装黑苹果教程(Mac版本:Yosemite 10.10.4),希望能够帮助有需要的朋友. 首先贴上我的电脑配置报表: ----- ...
- 【原】iOS学习之第三方-AFNetworking1.3.0
将 CocoaPods 安装后,按照 CocoaPods 的使用说明就可以将 AFNetworking 第三方集成到工程中,具体请看上篇博客iOS学习46之第三方CocoaPods的安装和使用(通用方 ...
- 【转】 iOS学习之sqlite的创建数据库,表,插入查看数据
原文: http://blog.csdn.net/totogo2010/article/details/7702207 iOS sqlite数据库操作.步骤是: 先加入sqlite开发库libsql ...
- iOS学习——Quartz2D学习之UIKit绘制
iOS学习——Quartz2D学习之UIKit绘制 1.总述 在IOS中绘图技术主要包括:UIKit.Quartz 2D.Core Animation和OpenGL ES.其中Core Animati ...
- iOS学习之sqlite的创建数据库,表,插入查看数据
目录(?)[-] 新建项目sqliteDemo添加使用sqlite的库libsqlite3dylib sqlite 的方法 获取沙盒目录并创建或打开数据库 创建数据表 插入数据 查询数据库并打印数据 ...
- iOS学习之UIPickerView控件的关联选择
接上篇iOS学习之UIPickerView控件的简单使用 接着上篇的代码 http://download.csdn.net/detail/totogo2010/4391870 ,我们要实现的效果如下: ...
- iOS学习笔记22-推送通知
一.推送通知 推送通知就是向用户推送一条信息来通知用户某件事件,可以在应用退到后台后,或者关闭后,能够通过推送一条消息通知用户某件事情,比如版本更新等等. 推送通知的常用应用场景: 一些任务管理APP ...
随机推荐
- oracle12c安装报错:PRVF-0002的解决方法
出错信息: 安装oracle12c, ./runInstaller 启动图形化报错 PRVF-0002 : Could not retrieve local nodename. 原因: 找不到主机名的 ...
- Jenkins的安装(最为简单的安装方法)
1.Jenkins的安装(最为简单的安装方法) (1)下载Jenkins(一个war文件) (2)cmd运行:java -jar jenkins.war [Jenkins需要IDK1.5以上的版本] ...
- 9273:PKU2506Tiling
9273:PKU2506Tiling 来源:http://noi.openjudge.cn/ch0202/9273/ 总时间限制:2000ms 单个测试点时间限制:1000ms内存限制:131072 ...
- 【CAS单点登录视频教程】 第01集-- 认识CAS
CAS 是什么? 目录 ----------------------------------------- [CAS单点登录视频教程] 第06集[完] -- Cas认证 学习 票据认证FormsAut ...
- SSD 为什么顺序写比随机写性能更好?
SSD以Page为单位做读写,以Block为单位做垃圾回收,Page一般有16KB大小,Block一般有几十MB大小,SSD写数据的逻辑是: 1)将该块数据所在的Page读出 2)修改该Page中该块 ...
- lu协程练习
生产者和消费者问题:当协程调用yield时,从一个悬而未决的resume中返回.简单的协程练习: function receive() local status,value = coroutine.r ...
- HTML CSS边框阴影的实现
一款用CSS控制背景图像平铺,从而实现区域边框阴影的效果,虽然用到了图片,但可贵之处是本代码不管你需要阴影的区域是多大,它都能自动适应,因些还是很值得收藏一下的,兼容所有的IE浏览器. <!DO ...
- 【Algorithm】九种常用排序的性能分析
最近间间断断的将9种排序算法用C实现,并且将其以博客笔记的形式记录下来,其中各个排序算法的描述部分特别参考了CSDN上太阳落雨的博客!现在就该来综合的分析这九种排序,让我们先来看看其算法复杂度和稳定性 ...
- 恢复oracle中用PLSQL误删除drop掉的表
一.查看回收站中表 select object_name,original_name,partition_name,type,ts_name,createtime,droptime from recy ...
- HTML <video> 标签
http://www.w3school.com.cn/tags/tag_video.asp <%@ Page Language="VB" AutoEventWireup=&q ...