KVC

2018-10-13  本文已影响15人  mtry

基础使用

关于valueForKey:取值规则

为了方便假设我们使用[obj valueForKey:@"name"]

相关get方法

  1. - (NSString *)getName,没有则下一步
  2. - (NSString *)name,没有则一步
  3. 集合类的相关方法判断,比如数组 - (NSInteger)countOfName- (id)objectInNameAtIndex:(NSInteger)index

相关变量

  1. _name,没有则下一步
  2. _isName,没有则下一步
  3. name,没有则下一步
  4. isName,还没有,要报错了

关于setValue:forKey: 设置规则

顺序和valueForKey:一样,不过方法有些不一样

相关set方法

  1. - (void)setName:(NSString *)name,没有则下一步
  2. - (void)setIsName:(NSString *)isName,还没有,要报错了

集合类特殊用法

例如:countminmaxsumavg

使用方法keypathToCollection.@collectionOperator.keypathToProperty

@interface KVCObject : NSObject

@property (nonatomic, assign) NSInteger number;

@end

@implementation KVCObject

@end

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    KVCObject *obj1 = [[KVCObject alloc] init];
    KVCObject *obj2 = [[KVCObject alloc] init];
    KVCObject *obj3 = [[KVCObject alloc] init];
    
    obj1.number = 20;
    obj2.number = 10;
    obj3.number = 30;
    
    NSMutableArray *array = [NSMutableArray array];
    [array addObject:obj1];
    [array addObject:obj2];
    [array addObject:obj3];
    
    NSLog(@"%@", [array valueForKey:@"@count"]);
    NSLog(@"%@", [array valueForKeyPath:@"@min.number"]);
    NSLog(@"%@", [array valueForKeyPath:@"@max.number"]);
    NSLog(@"%@", [array valueForKeyPath:@"@sum.number"]);
    NSLog(@"%@", [array valueForKeyPath:@"@avg.number"]);
    NSLog(@"%@", [array valueForKeyPath:@"number"])
}

打印


NSLog(@"%@", [array valueForKey:@"@count"]) -> 3
NSLog(@"%@", [array valueForKeyPath:@"@min.number"]) -> 10
NSLog(@"%@", [array valueForKeyPath:@"@max.number"]) -> 30
NSLog(@"%@", [array valueForKeyPath:@"@sum.number"]) -> 60
NSLog(@"%@", [array valueForKeyPath:@"@avg.number"]) -> 20
NSLog(@"%@", [array valueForKeyPath:@"number"]) ->  (
    20,
    10,
    30
)

上一篇下一篇

猜你喜欢

热点阅读