KVC基础篇

作者: 黄龙辉 | 来源:发表于2015-09-13 12:31 被阅读249次

键值编码(key-value coding)是一种间接更改对象状态的方式。通过传入的字符串(key)查找要更改的对象的状态。查找的规则是,先查找以字符串(key)命名的getter和setter方法。如果没有找到对应的方法,再查找key和_key的实例变量。

  1. KVC中基本调用的两个方法:
  • valueForKey:
    NSString *name = [self.studentModel valueForKey:@"name"];
  • setValue:forKey:
    [self.studentModel setValue:@"李四" forKey:@"name"];
  1. 对于标量值,会自动进行装箱和拆箱。
  2. 使用键路径:
  • valueForKeyPath:
    NSString *phone = [self.schoolModel valueForKeyPath:@"classModel.name"];
  • setValue:forKeyPath:
    [self.schoolModel setValue:@"初三五班" forKeyPath:@"classModel.name"];
  1. 对数组进行操作,会对数组的每个元素调用valueForKey:
    NSArray *gradeArray = [self.studentModel valueForKeyPath:@"scoreArray.grade"];
  2. 快速运算
  • 求个数
    NSNumber *count = [self.studentModel valueForKeyPath:@"scoreArray.@count"];
  • 求和:
    NSNumber *sum = [self.studentModel valueForKeyPath:@"scoreArray.@sum.grade"]
  • 求平均:
    NSNumber *avg = [self.studentModel valueForKeyPath:@"scoreArray.@avg.grade"];
  • 求并集,去掉重复元素:@distinctUnionOfObject
  1. 批量处理
  • setValuesForKeysWithDictionary:
    NSDictionary *newInfoDic = @{@"name":@"王五", @"phoneNumber":@"15123456789"}; [self.studentModel setValuesForKeysWithDictionary:newInfoDic];
  • dictionaryWithValuesForKeys:
    NSDictionary *dic = [self.studentModel dictionaryWithValuesForKeys:@[@"name", @"phoneNumber"]];
  1. 可以覆写setNilValueForKey:,定义传递nil时的处理方式:
    - (void)setNilValueForKey:(NSString *)key{ if ([key isEqualToString:@"name"]) { name = @"未填"; }else{ [super setNilValueForKey:key]; }}

  2. 可以通过覆写setValue:forUndefinedKey:,处理未定义键的处理方式。

  3. nil和[NSNull null]。在批量处理时,若值为nil,就会返回[NSNull null]。使用NSLog输出时,nil为(null),[NSNull null]为<null>。

相关文章

  • KVC基础篇

    键值编码(key-value coding)是一种间接更改对象状态的方式。通过传入的字符串(key)查找要更改的对...

  • Crash拦截器 - KVC搜索模式及崩溃防护

    在本文中,我们将了解到如下内容:KVC 基础Setter方法的搜索模式KVC 基础Getter方法的搜索模式KVC...

  • 简单易懂KVC基础篇

    引言 这篇文章其实就是被他的兄弟KVO给逼出来的,没办法。官方文档中介绍过KVC是KVO技术实现的基础,闲话免提,...

  • KVC和KVO的基础使用方法

    KVC和KVO的基础使用方法 首先,KVC(Key Value Coding)就是由NSKeyValueCodin...

  • KVC

    iOS 如何使用KVC iOS开发UI篇—Kvc简单介绍 iOS开发系列--Objective-C之KVC、KVO

  • iOS 面试题(转载自开源中国)

    面试题 基础篇 面向对象的三大特征 内存管理 Block GCD KVO KVC 推送通知 ⚠iOS7 iOS8差...

  • 关于KVC分析总结笔记

    KVC基础理解 KVC全称Key-Value-Coding俗称键值编码,可以通过一个key来访问某个属性。API:...

  • [OC基础]KVC

    key-value coding,使用字符串更改对象状态 介绍 用途:1.访问私有属性2.整体操作(计算)3.批处...

  • OC基础-KVC

    KVC:Key-Value-Coding,俗称“键值编码”,可以通过一个key来访问某个属性常见的api: set...

  • iOS KVC的几种情况简析

    kvc取值时,需注意的几点问题; 讲解一下kvc各种问题,包括基础属性赋值,属性对象的属性赋值,私有属性赋值 以及...

网友评论

    本文标题:KVC基础篇

    本文链接:https://www.haomeiwen.com/subject/skopcttx.html