KVC 创建 数组代理对象 Array proxy object

KVC 创建 数组代理对象 Array proxy object

KVC 机制中,如果实现了下面的方法,会自动创建一个 数组代理对象
1. countOf
2, objectInAtIndex:AtIndexes 两个方法中的一个

.m 文件中 , 这里 arrayProxyObject 并不是对象的属性,我们可以通过 kvc 生成一个 arrayProxyObject 属性(数组代理对象),可以把这个代理对象当做 NSArray 使用

    - (NSArray *)arrObj{
        return @[@"100",@"101",@"102",@"103"];
    }
    //------------------------------ 下面三个方法 可以利用 kcv创建一个 (类似数组)TestValue (这个说法还不完善,等看完 kvc set 过程之后再完善)

    // 这个方法必须有
    - (NSUInteger)countOfArrayProxyObject{
        return self.arrObj.count;
    }
    // 下面的方法 二选一
    - (NSArray *)arrayProxyObjectAtIndexes:(NSIndexSet *)indexes{
        return [self.arrObj objectsAtIndexes:indexes];
    }

    - (id)objectInArrayProxyObjectAtIndex:(NSUInteger)index{
        return [self.arrObj objectAtIndex:index];
    }

外部调用

    // 通过 kvc 生成一个 arr 对象,arrayProxyObject 是一个不存在的属性
    NSArray *arr = [obj valueForKey:@"arrayProxyObject 是一个不存在的属性"];
    NSInteger count = [arr count]; // 调用 countOfArrayProxyObject
    id eletment = [arr objectAtIndex:0]; // 调用 objectInArrayProxyObjectAtIndex
    NSArray *subArr = [arr objectsAtIndexes:[NSIndexSet indexSetWithIndex:0]]; // 调用 arrayProxyObjectAtIndexes



NSSet 代理对象

同数组代理对象一样
只要实现了下面三个方法,通过 kvc 可以创建一个 NSSet 代理对象

  1. countOf
  2. enumeratorOf
  3. memberOf:

你可能感兴趣的:(KVC 创建 数组代理对象 Array proxy object)