KVC 创建 数组代理对象 Array proxy object
KVC 机制中,如果实现了下面的方法,会自动创建一个 数组代理对象
1. countOf<Key>
2, objectIn<Key>AtIndex:
和 <key>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 代理对象
countOf<Key>
enumeratorOf<Key>
memberOf<Key>: