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的更多相关文章

  1. iOS key value coding kvc在接收json数据与 model封装中的使用

    iOS key value coding  kvc在接收json数据与 model封装中的使用 使用 kvc 能够极大的简化代码工作,及以后的接口维护工作: 1:先创建MovieModel类.h和 . ...

  2. IOS学习笔记48--一些常见的IOS知识点+面试题

      IOS学习笔记48--一些常见的IOS知识点+面试题   1.堆和栈什么区别? 答:管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制:对于堆来说,释放工作由程序员控制,容易产生memor ...

  3. 【原】iOS学习47之第三方-FMDB

    将 CocoaPods 安装后,按照 CocoaPods 的使用说明就可以将 FMDB 第三方集成到工程中,具体请看博客iOS学习46之第三方CocoaPods的安装和使用(通用方法) 1. FMDB ...

  4. 黑苹果-IOS学习的开始

    深知安装黑苹果的不易,在这里写一下关于我的Thinkpad E430c安装黑苹果教程(Mac版本:Yosemite 10.10.4),希望能够帮助有需要的朋友. 首先贴上我的电脑配置报表: ----- ...

  5. 【原】iOS学习之第三方-AFNetworking1.3.0

    将 CocoaPods 安装后,按照 CocoaPods 的使用说明就可以将 AFNetworking 第三方集成到工程中,具体请看上篇博客iOS学习46之第三方CocoaPods的安装和使用(通用方 ...

  6. 【转】 iOS学习之sqlite的创建数据库,表,插入查看数据

    原文:  http://blog.csdn.net/totogo2010/article/details/7702207 iOS sqlite数据库操作.步骤是: 先加入sqlite开发库libsql ...

  7. iOS学习——Quartz2D学习之UIKit绘制

    iOS学习——Quartz2D学习之UIKit绘制 1.总述 在IOS中绘图技术主要包括:UIKit.Quartz 2D.Core Animation和OpenGL ES.其中Core Animati ...

  8. iOS学习之sqlite的创建数据库,表,插入查看数据

    目录(?)[-] 新建项目sqliteDemo添加使用sqlite的库libsqlite3dylib sqlite 的方法 获取沙盒目录并创建或打开数据库 创建数据表 插入数据 查询数据库并打印数据 ...

  9. iOS学习之UIPickerView控件的关联选择

    接上篇iOS学习之UIPickerView控件的简单使用 接着上篇的代码 http://download.csdn.net/detail/totogo2010/4391870 ,我们要实现的效果如下: ...

  10. iOS学习笔记22-推送通知

    一.推送通知 推送通知就是向用户推送一条信息来通知用户某件事件,可以在应用退到后台后,或者关闭后,能够通过推送一条消息通知用户某件事情,比如版本更新等等. 推送通知的常用应用场景: 一些任务管理APP ...

随机推荐

  1. oracle中extract()函数----用于截取年、月、日、时、分、秒

    oracle中extract()函数从oracle 9i中引入,用于从一个date或者interval类型中截取到特定的部分 语法如下: extract ( { year | month | day ...

  2. java导出excel工具类

    java导出excel须要使用HSSFWorkbook这个类,须要导入poi-3.6-20091214.jar 工具类调用例如以下: package com.qlwb.business.util; i ...

  3. Flink官网文档翻译

    http://ifeve.com/flink-quick-start/ http://vinoyang.com/2016/05/02/flink-concepts/ http://wuchong.me ...

  4. 【转载】Java 网络编程

      本文主要是自己在网络编程方面的学习总结,先主要介绍计算机网络方面的相关内容,包括计算机网络基础,OSI参考模型,TCP/IP协议簇,常见的网络协议等等,在此基础上,介绍Java中的网络编程. 一. ...

  5. 浅谈Spring的PropertyPlaceholderConfigurer

    大型项目中,我们往往会对我们的系统的配置信息进行统一管理,一般做法是将配置信息配置与一个cfg.properties的文件中,然后在我们系统初始化的时候,系统自动读取cfg.properties配置文 ...

  6. 搭建Docker私有仓库--自签名方式

    为了能集中管理我们创建好的镜像,方便部署服务,我们会创建私有的Docker仓库.通读了一遍官方文档,Docker为了确保安全使用TLS,需要CA认证,认证时间长的要钱啊,免费过期时间太短,还是用自签名 ...

  7. spring boot mybatis没有扫描jar中的Mapper接口

    只需要在spring boot启动类上加上注解,并指定jar包中接口文件包路径即可 如下: @ComponentScan(basePackages = "com.xx") @Map ...

  8. Linux chattr 命令

    不让用户修改.删除文件等,使用 chattr保护 chattr命令的用法:chattr [ -RV ] [ -v version ] [ mode ] files… 最关键的是在[mode]部分,[m ...

  9. mysql基础拓扑图

    存在的意义,就是体验差异! 01.mysql架构图 02.账户认证流程 03.mysql逻辑结构

  10. ios core plot设置xy坐标

    #import "ViewController.h" @interface ViewController () //要绘制基于x,y轴的图形 @property(nonatomic ...