• objective-c(六)关于KVC模式


      在objective-c的编程中。提供了kvc模式来更灵活的取值赋值工作。

      只要通过 

      [对象 setValue:@"str" forKey:@"str"];//设置对象值

      [对象 valueForKey:@"str"];//取值

      来进行动态的使用。

      而且当对象的成员变量是另外一个对象时。可是使用点标记来定位,

      [对象 setValue:@"str" forKeyPath:@"str"];//使用点标记来定位赋值

      [对象 valueForKeyPath:@"str"];//使用点标记来定位取值

      这是在一对一的关系中,如果使用了@property标签。说明不用写存储器方法。如果不使用,那么要写相应的存储器方法。

      在一对多的关系中。需要的是使用正常@property标签的同时,或者手动编写存储器方法后。有一些函数可以帮助计算。

      [对象 valueForKeyPath:@"@avg.str"];//取到平均数

      [对象 valueForKeyPath:@"str.@count"];//取数量特殊

      常用函数有

      @avg  返回集合平均数

      @count  返回集合元素个数

      @max  返回集合最大数

      @min  返回集合最小数

      @sum  返回集合总和

      还有其他函数。需要时可以百度搜索 kvc函数

      因为明知道取回的数据时数组或者集合。可以使用函数来计算。

      在使用一对多的对象时,和java的hibernate相同。考虑了对象见的关系。在使用时除了需要的正常存储器方法。还必须实现其他的特殊方法。这两种特殊方法分别是:

      一.索引存储器方法  索引存储器方法针对的是返回有序数组的方法:NSArray。

        索引存储器方法分为:

        1.不可变的,返回的就是一个普通的固定长度的数组。

        必须实现的方法有:

        -(NSUInteger) countOf<成员变量名>;//获取长度 

        -(id) object<成员变量名>AtIndex:索引;//根据索引获取某个元素

        最后是可选方法(用来提高搜索性能)

        -(void) get<成员变量名>:(对象 **)outBuffer range:(NSRange) inRange://根据条件搜索。本存储器为可选。不是必须

        2.可变的。返回的是一个可以自动变更长度的数组

        -(void) insertObject:in<成员变量名> AtIndex:index;//根据索引插入元素

        -(void) removeObjectFrom<成员变量名>AtIndex:inIndex;//根据索引删除元素

        -(void) replaceObjectIn<成员变量名>AtIndex:(NSInteger )index    withObject:(id) in<成员变量名>;//根据索引替换元素

        二.无序存储器方法  无序存储器方法针对的是返回无序集合的方法:NSSet。

        1.不变的,返回的是一个固定长度的

        必须实现的方法有:

        -(NSUInteger) countOf<成员变量名>;//获取集合长度

        -(NSEnumerator *)enumeratorOf<成员变量名>;//返回该集合的key值

        -(对象 *)memberOf<成员变量名>:(Bar *) inBar;//返回根据一个元素获得所有isEqual为真的所有元素

        2.可变的,返回一个可以添加长度的集合

        -(void) add<成员变量名>Object:<对象 *> in<成员变量名>;//用来添加元素

        -(void) remove<成员变量名>Object:<对象 *> in<成员变量名>;//用来删除元素

        -(void) intersect<成员变量名>:(NSSet *)in<成员变量名>://取交集(共同有的值)  

  • 相关阅读:
    Mybatisplus<一> Springboot框架使用MybatisPlus代码自动生成器
    今日收获
    今日收获
    字典特征提取
    sklearn数据集的导入及划分
    文本特征提取
    MySQL基础笔记
    docker笔记
    BOM 中的location对象和history对象
    完善 原生Js 实现的简单无缝滚动轮播图
  • 原文地址:https://www.cnblogs.com/imtodd/p/6647384.html
Copyright © 2020-2023  润新知