美文网首页
KVC(2) 访问对象属性

KVC(2) 访问对象属性

作者: yxibng | 来源:发表于2020-01-21 23:25 被阅读0次

一个对象与它的对象属性有三种类型的关系

  • Attributes 这类属性就是简单的数值类型
    • scalars,
    • strings
    • Boolean values
  • To-one relationships.
    • 属性是一个对象,该对象又有有自己的属性。
  • To-many relationships
    • 该属性是个集合(NSArray,NSSet)
    • (NSArray,NSSet)内部是其他的对象
@interface BankAccount : NSObject
 // An attribute
@property (nonatomic) NSNumber* currentBalance;              
 // A to-one relation
@property (nonatomic) Person* owner;       
// A to-many relation                 
@property (nonatomic) NSArray< Transaction* >* transactions; 
@end

使用key来访问Attributes类型的属性

一个类实现了NSKeyValueCoding的协议,这个类的对象就支持了KVC。一个继承了NSObject的对象,会默认支持KVC, 因为 NSObject 提供了NSKeyValueCoding 的默认实现。

获取值

  • valueForKey:valueForKeyPath:
    • 如果key不存在,会调用valueForUndefinedKey:
    • valueForUndefinedKey:默认抛出异常NSUndefinedKeyException,子类可以重写此方法,提供其他的实现
  • dictionaryWithValuesForKeys:
    • 返回对应keys的一个value数组
    • 对应的set方法为setValuesForKeysWithDictionary:
    • 注意集合里面不可以包含nil,对应的key的value为nil,需要用 NSNull 来替代

设置值

  • setValue:forKey:setValue:forKeyPath:
    • 如果key不存在,会调用 setValue:forUndefinedKey:
    • setValue:forUndefinedKey:默认抛出异常NSUndefinedKeyException,子类可以重写此方法,提供其他的实现
  • setValuesForKeysWithDictionary:
    • 通过字典给对应key的属性赋值
    • 相当于对每个键值对调用setValue:forKey:setValue:forKeyPath:
  • setNilValueForKey:
    • 默认不允许,会抛出 NSInvalidArgumentException
    • 子类可以重写此方法,提供其他的实现

相关文章

  • KVC(2) 访问对象属性

    一个对象与它的对象属性有三种类型的关系 Attributes 这类属性就是简单的数值类型scalars,strin...

  • 面试

    KVC KVC可以通过key直接访问对象的属性,或者给对象的属性赋值(包括私有属性),这样可以在运行时动态的访问或...

  • KVC 与 KVO 使用和原理解析

    KVC 什么是 KVC KVC 主要方法 KVC 定义了一种按名称访问对象属性的机制,支持这种访问的主要方法是: ...

  • 关于KVC与KVO的个人理解

    KVC---Key-Value Coding 依我个人理解,KVC就是一种间接访问对象属性的机制。对象的属性名就是...

  • KVC & KVO原理

    1、KVC KVC可以通过key直接访问对象的属性,或者给独享的属性直接赋值,这样可以在运行时动态的访问或修改对象...

  • KVC/KVO的理解

    KVC KVC实现了基于KEY访问对象属性的一套查找规则,可以直接操作对象的属性,变量即使设置为私有的也一样访问。...

  • valueForKeyPath:的妙用

    KVC (KVC)键值编码相信大家都不陌生,常用来访问对象属性,也可以访问集合属性。还有一些可以给通过此方法访问一...

  • 对KVC读取顺序的理解

    KVC用了这么久,是时候总结一下kvc的原理了。kvc通过key直接访问对象的属性,或者给对象的属性直接赋值,因此...

  • KVC详解

    KVC定义 KVC(Key-value coding)键值编码。通过来直接访问对象的属性,或者为属性赋值...

  • Key-Value Coding(键值编码)

    一、KVC简介 KVC提供了一套不通过访问器方法或者属性变量,通过Key或者KeyPath直接访问对象属性的机制。...

网友评论

      本文标题:KVC(2) 访问对象属性

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