开发环境:xcode7

一.KVC概述

  1.KVC是KeyValueCoding的简称,它是一种可以直接通过类属性的名字来作key,再绑定key的值来访问类属性的机制,而不再通过利用@property提供的setter和getter方法来访问;

  2.KVC支持类对象和内建的基本数据类型;

  3.KVC的关键方法定义在NSKeyValueCoding.h文件里,常用的方法:

  修改值:

  - (void)setValue:(nullable id)value forKey:(NSString *)key;

  - (void)setValue:(nullable id)value forKeyPath:(NSString *)keyPath;

  获取值:

  - (nullable id)valueForKey:(NSString *)key;

  - (nullable id)valueForKeyPath:(NSString *)keyPath;

二.演示

  1.新建一个工程

  2.新建一个类Person类

Persion.h里为Person类添加姓名和年龄字段,不用@property处理为属性,提供setter和getter方法

#import <Foundation/Foundation.h>

@interface Person : NSObject {
NSString *name;
int age;
} @end

Person.m默认即可,不做任何添加

#import "Person.h"

@implementation Person

@end

  3.在main.m文件中利用KVC,我们来实现对Person类中name和age实例变量的访问

#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Person *person = [[Person alloc] init];
[person setValue:@"damon" forKey:@"name"];
[person setValue:@"" forKey:@"age"];
NSString *name = [person valueForKey:@"name"];
int age = [[person valueForKey:@"age"] intValue];
NSLog(@"name:%@",name);
NSLog(@"age:%d",age);
}
return ;
}

  4.新建Pet类,让Person类拥有一个Pet实例

  Pet.h文件

#import <Foundation/Foundation.h>

@interface Pet : NSObject {
NSString *name;
} @end

  Pet.m文件默认,不做任何修改

  更新Person.h文件,Person.m文件不做任何修改

#import <Foundation/Foundation.h>
@class Pet;
@interface Person : NSObject {
NSString *name;
int age;
Pet *myPet;
} @end

  5.在main.m文件中,利用KVC访问myPet的name实例变量

#import <Foundation/Foundation.h>
#import "Person.h"
#import "Pet.h" int main(int argc, const char * argv[]) {
@autoreleasepool {
Person *person = [[Person alloc] init];
[person setValue:@"damon" forKey:@"name"];
[person setValue:@"" forKey:@"age"];
NSString *name = [person valueForKey:@"name"];
int age = [[person valueForKey:@"age"] intValue];
NSLog(@"name:%@",name);
NSLog(@"age:%d",age); Pet *pet = [[Pet alloc] init];
[pet setValue:@"旺旺" forKey:@"name"];
[person setValue:pet forKey:@"myPet"];
NSString *myPetName = [person valueForKeyPath:@"myPet.name"];
NSLog(@"myPetName:%@",myPetName);
}
return ;
}

三.总结

  KVC这种比编码方式使用起来非常简单,结合KVO,很适用于当模型数据发生改变时,引发的UI改变的情况。

IOS之KVC机制(Object-C篇)的更多相关文章

  1. ios使用kvc机制简化对json的解析

    在 ios开发中,我们经常需要对服务器的传回来的json进行解析,特别是对哪些字段特别多的就会又烦躁的情绪.tmd都是一样的东西,要为每个property赋值,真是累人啊.举个简单的例子吧.服务器会过 ...

  2. iOS编程——Objective-C KVO/KVC机制[转]

    这两天在看和这个相关的的内容,全部推翻重写一个版本,这是公司内做技术分享的文档总结,对结构.条理做了更清晰的调整.先找了段代码,理解下,网上看到最多的一段的关于KVC的代码 先上代码 1.     1 ...

  3. iOS编程——Objective-C KVO/KVC机制

    来源:http://blog.sina.com.cn/s/blog_b0c59541010151s0.html 这两天在看和这个相关的的内容,全部推翻重写一个版本,这是公司内做技术分享的文档总结,对结 ...

  4. iOS:KVO/KVC 的概述与使用

    iOS:KVO/KVC 的概述与使用       KVO   APP开发技术QQ群:347072638 一,概述 KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性 ...

  5. iOS KVO & KVC

    键值观察:值更改时通知观察者 键值观察(Key-value observing,或简称 KVO)允许对象观察另一个对象的属性.该属性值改变时,会通知观察对象.它了解新值以及旧值:如果观察的属性为对多的 ...

  6. Android Native -- Message/Handler/Looper机制(原理篇)

    ⌈Android Native消息队列处理系列文章⌋ Android Native -- Message/Handler/Looper机制(原理篇) Android Native -- Message ...

  7. iOS 阶段学习第25天笔记(iOS沙盒机制介绍)

    iOS学习(OC语言)知识点整理 一.iOS沙盒机制介绍 1)概念: 每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,与其他应用放入文件 系统隔离,ios系统不允许访问 其他应用的应用沙盒 ...

  8. iOS沙盒机制介绍,Block 的介绍

    一.iOS沙盒机制介绍 (转载) 1)概念:每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,与其他应用放入文件 系统隔离,ios系统不允许访问 其他应用的应用沙盒,但在ios8中已经开放访 ...

  9. QF——iOS沙盒机制

    iOS沙盒机制: 什么是沙盒机制?  点击进入  点击进入 沙盒机制(SandBox)是一种安全体系,它规定了APP的所有文件数据都必须存储在这片区域.所有非代码文件的数据都保存在这片区域. 沙盒里有 ...

随机推荐

  1. Android实例-解决启动黑屏问题(XE8+小米2)

    结果: 1.在启动时马上出现图片界面,但在出现程序界面前会有黑屏,大约有0.2秒左右. 实现: 1.建立2个文件:loading.png和styles.xml: ①其中loading.png是启动时替 ...

  2. DRM你又赢了:其API纳入HTML5标准

    摘要:W3C今天发布了一份加密媒体扩展工作草案(EME),将支持DRM多媒体数字内容,而且浏览器将无需使用Flash或Silverlight.EME定义了一系列API,允许JavaScript和HTM ...

  3. .NET常用工具类集锦

    不错的地址: http://www.cnblogs.com/flashbar/archive/2013/01/23/helper.html https://github.com/chrisyanghu ...

  4. CocoaPods使用命令

    5.需要在工程中创建一个Podfile文件, 使用命令: $cd /Users/shiyunlei/Desktop/CocoapodsSample(进入工程目录,cd后面的是工程的路径) $ touc ...

  5. C#-设置窗体在显示器居中显示

    在窗体的属性中查看:StartPosition属性,该属性的设置中有一个"CenterScreen"的选择项,该项就是设置窗体局中显示的.

  6. CentOS安装Nginx安装详解

    一.准备工作,安装依赖包,缺一不可!(推荐先用命令查看自己是否已经安装一下软件,确认没有再安装) --------------------------------------------------- ...

  7. swift 开篇

    苹果的WWDC ,除了公布了os x 10.10 和IOS8 外,还推出了Swift.具体点击这里 代码整体风格有点像Java,也有点像javascript. 以下给出一些代码段(来自苹果官方手冊): ...

  8. MySQL监控模板说明-Percona MySQL Monitoring Template for Cacti

    http://blog.chinaunix.net/uid-16844903-id-3535535.html https://www.percona.com/doc/percona-monitorin ...

  9. Python built-in函数的源码实现定位

    http://blog.nsfocus.net/locate-python-built-in-function/

  10. Windows 7 Ultimate(旗舰版)SP1 32/64位官方原版下载(2011年5月12日更新版)

    MSDN于2011年5月12日,最新发布简体中文Windows 7 Ultimate 旗舰版 SP1 DVD镜像安装包,分32位和64位两个版本.最新发行代号分别是:677486(32位),67740 ...