阅读 

  • valueForKey (总体规划,先找相关方法,再找相关变量)

    • 1、先是找相关方法,如果方法找不到
    • 2、那么去判断

      1
      2
      3
      + (BOOL)accessInstanceVariablesDirectly{
      return YES;
      }

    此方法是否返回YES,默认为YES

  • 3、如果是NO,直接执行KVC的valueForUndefinedKey:(系统弹出异常,未定义key),

    • 如果是YES,继续再去找相关变量
    • 相关方法:getKey, key 优先级getKey大
      于变量方法:可以返回数组

      1
      2
      3
      4
      5
      6
      7
      8
      9
      - (NSUInteger)countOf<Key>{
      return 2;
      }
      - 大专栏  KVC解析(id)objectIn<Key>AtIndex:(NSUInteger)index{
      if (index == 0) {
      return @"hanck";
      }
      return @"badian";
      }
* 相关变量 **_key** **_isKey** **key** **isKey** 优先级依次降低
  • setValue 方法

    • 先找set方法,找不到再给属性赋值 setKey setIsKey

    • setValue:(id)value forKeyPath:(NSString *)keyPath来设置私有变量

    • 打断点在viewdidappear里获取subViews
    • 隐藏方法:max min sum count avage

KVO使用

1
2
3
4
5
- (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(void *)context;
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context{
NSLog(@"%@",change);
}

可以手动触发通知,默认是自动触发通知

KVC解析的更多相关文章

  1. KVC 实战浅析

    KVC 就是 key value coding,废话! 今天我们研究的是如何使用它! key value coding : 间接通过字符串类型的key取出对应的属性值 KVC的价值 1.可以访问私有成 ...

  2. iOS开发:一个无限滚动自动播放图片的Demo(Swift语言编码)

    很久以前就想写这么一个无限滚动的Demo了,最近学习了下Swift,手中没有可以用来练手的Demo,所以才将它实现了. Github地址(由于使用了UIView+AutoLayout第三方进行布局,所 ...

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

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

  4. iOS 开发之 KVC - setValuesForKeysWithDictionary 解析

    从字典映射到一个对象,这是KVC中的一个方法所提供的,这个方法就是 setValuesForKeysWithDictionary:,非常好用,不需要你来一一的给对象赋值而直接从字典初始化即可,但用的不 ...

  5. 数据解析(XML和JSON数据结构)

    一   解析 二 XML数据结构 三 JSON 数据结构     一 解析 1  定义: 从事先规定好的格式中提取数据     解析的前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照 ...

  6. IOS开发-KVC

    1. 什么是kvc kvc--key-value coding,健值编码 可以通过key直接访问对象属性的value的方法 2.使用场景 kvc主要是为了让代码变的更简介明了 用的比较多的是在后台数据 ...

  7. IOS-JSON & XML解析

    XML & JSON 简介 •JSON –作为一种轻量级的数据交换格式,正在逐步取代XML,成为网络数据的通用格式 –基于JavaScript的一个子集 –易读性略差,编码手写难度大,数据量小 ...

  8. 【原】iOS学习38网络之数据解析

    1. 解析的基本的概念 解析:从事先规定好的格式中提取数据 解析前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照格式获取数据 iOS开发常见的解析:XML解析.JOSN解析 2. X ...

  9. 系统自带的NSJSONSerialization解析json文件

    #import "ViewController.h" #import "Student.h" #import "GDataXMLNode.h" ...

随机推荐

  1. 工程日记之ChildLost(2) :如何编写一个多线程的程序

    Dispatch Dispatch结合语言特性,运行时,和系统的特点,提供了系统的,全面的高层次API来提升多核多线程编程的能力. Dispatch会自动的根据CPU的使用情况,创建线程来执行任务,并 ...

  2. 吴裕雄--天生自然MySQL学习笔记:MySQL 创建数据库

    在登陆 MySQL 服务后,使用 create 命令创建数据库,语法如下: CREATE DATABASE 数据库名; 以下命令简单的演示了创建数据库的过程,数据名为 RUNOOB: [root@ho ...

  3. UML-GRASP前5种模式

    1.创建者(Creator) 问题:谁创建类A? 答:来自领域模型.设计模型(交互图.类图) 2.信息专家 问题:给对象分配职责的基本原则是什么? 回答:谁具有完成该职责的信息,谁负责该职责. 因为根 ...

  4. postman问题

    问题1:postman请求出现 'SSL certificate verification' ,实际为https的问题 解决: 1)关闭fiddler 2)或在File > Settings & ...

  5. YouTube推出慈善组合工具,能引国内视频网站跟风吗?

    互联网的出现不仅仅让大众的工作和生活更便利,更深度改变着传统事物的形态,让其被更多人广泛地认知并接触到.如,原本在线下通过彩页.手册.横幅等进行宣传.募捐的慈善,就通过互联网展现出更为强大的影响力.而 ...

  6. iTOP-4412-Ubuntu系统源码-ubuntu没有声音的解决办法

    准备工作 1.下载 vim 在命令行上输入 apt-get install vim 下载 vim 2.输入 vim /etc/hosts 在所打开界面的第一行最后写上 iTOP4412-ubuntu- ...

  7. SQL 一个【OR】属性给你带来了怎样的麻烦

    关于 数据库  or   的用法,就不说了     讲讲OR对数据库性能有多大的杀伤力,以后线上的项目如果是数据量很大的表,一定不要用OR来查询 今天在工作的时候,同事遇到了SQL优化的问题,让我帮忙 ...

  8. JAVA多线程之状态转换图

    线程状态转换图如下: 1.新建(new):线程对象被创建后就进入了新建状态.如:Thread thread = new Thread(); 2.就绪状态(Runnable):也被称为“可执行状态”.线 ...

  9. Fractal Dimension|Relative Complexity|CG含量|重复序列|

    生物信息学-序列拼接方法 物理学方法 Fractal Dimension of Exon and Intron Sequences --------------CGCGGCGTGTGTTATA --- ...

  10. Python—快速排序算法

    # _*_ coding=utf-8 _*_ """ 快速排序: 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比 另外一部分的所有数据都要小,然后 ...