ios笔记--oc语法2 (KVC)

来源:互联网 发布:mac版ps烟雾笔刷下载 编辑:程序博客网 时间:2024/06/05 14:24

申明:此为本人学习笔记,若有纰漏错误之处的可留言共同探讨

/*

思路

通过KVC设置属性 setValue ... forKey...

取值  valueForKeyPath...


*/


KVC 全称 key value coding  (键值编码)


#import <Foundation/Foundation.h>

#import "Author.h"

#import "Book.h"

int main(int argc, const char * argv[]) {

    @autoreleasepool {

         

        Book*book =[[Book alloc]init];

        Author *author =[[Author alloc]init];

    

        //1 通过KVC设置属性

        [book setValue:author forKey:@"author"];

        

        //2 通过键值路径设置属性

        [book setValue:@"金庸" forKeyPath:@"author.name"];

        //3:等价于2

        [author setValue:@"金庸" forKey:@"name"];

        

        NSLog(@"author1 ===%@",[author valueForKey:@"name"]);

        NSLog(@"author2 ===%@",[book valueForKeyPath:@"author.name"]);

        

        //计算属性的 sum avg min max count

        Book *book1 =[[Book alloc]init];

        Book *book2 =[[Book alloc]init];

        Book *book3 =[[Book alloc]init];

        Book *book4 =[[Book alloc]init];

        

        [book1 setValue:@100 forKey:@"price"];

        [book2 setValue:@200 forKey:@"price"];

        [book3 setValue:@300 forKey:@"price"];

        [book4 setValue:@400 forKey:@"price"];

        

        //KVC设置数组属性值

        NSArray *array =[[NSArray alloc]initWithObjects:book1,book2,book3,book4, nil];


        [author setValue:array forKey:@"isbook"];

        //通过KVC key获得数组属性值

        NSArray *priceArr =[author valueForKeyPath:@"isbook.price"];

        NSLog(@"%@",priceArr);


    //计算总和

   NSNumber *number =[author valueForKeyPath:@"isbook.@sum.price"];

    

    NSLog(@"sum == %@",number);


    //计算平均

        NSNumber *number1 =[author valueForKeyPath:@"isbook.@avg.price"];

        NSLog(@"avg == %@",number1);

        

     //最大值

        NSNumber *number2 =[author valueForKeyPath:@"isbook.@max.price"];


    NSLog(@"max ====%@",number2);

        

        //总数

        NSNumber *number3 =[author valueForKeyPath:@"isbook.@count"];


        NSLog(@"count ====%@",number3);

        

        

    }

    return 0;

}



#import <Foundation/Foundation.h>

@class Author;    


@interface Book : NSObject

{

    Author *author;

    float price;

}


@end



#import <Foundation/Foundation.h>


@interface Author : NSObject

{

    NSString* name;

    NSArray * isbook;


}

@end




1 0