首页 > 代码库 > 对象属性操作-ios

对象属性操作-ios

#import <Foundation/Foundation.h>@class Author;@interface Books : NSObject{     @private    NSString *color;    int book_id;    NSString *box;    Author *author;    NSArray *relationbook;    float price;    @public    NSString *name;    }@property (nonatomic) int size;-(void) setBox:(NSString *) box;-(NSString *) box;-(NSString *) method;@end

 

#import "Books.h"@implementation Books@synthesize  size=_size;-(void) setBox:(NSString *) _box{    box=_box;}-(NSString *) box{    return box;}-(NSString *) method{    return @"这个方法可以通过[],或者点语法调用";}@end

 

#import <Foundation/Foundation.h>@interface Author : NSObject@property (nonatomic,copy) NSString *name;@end

 

#import "Author.h"@implementation Author@synthesize name=_name;@end

 

        Books *book=[[Books alloc] init];                //当属性为public时,可以通过指针来操作,kvo,kvc操作        book->name=@"iso开发";        NSLog(@"%@",book->name);        [book setValue:@"iphone" forKeyPath:@"name"];        NSLog(@"%@",[book valueForKey:@"name"]);                //当属性为private时,可以用property和synthesize来自动生成get,set方法,然后通过点语法或者调用自动生成方法来操作        book.size=12;        NSLog(@"%d",book.size);        [book setSize:14];//自动生成的set方法        NSLog(@"%d",[book size]);//自动生成的get方法        [book setValue:[NSNumber numberWithInt:2323] forKeyPath:@"size"];        NSLog(@"%@",[book valueForKey:@"size"]);                //当属性为private时,可以手动生成,然后通过点语法或者调用方法来操作        NSString *content=@"书的内容";        book.box=content;        NSLog(@"%@",book.box);        [book setBox:content];         NSLog(@"%@",[book box]);        [book setValue:@"来说" forKeyPath:@"box"];        NSLog(@"%@",[book valueForKey:@"box"]);        //声明普通方法可以通过点语法调用或者[]调用        NSLog(@"%@",[book method]);        NSLog(@"%@",book.method);                //当属性为private时,可以通过kvo,kvc,即下面方式访问        //-----属性为普通类型操作        [book setValue:@"android开发" forKey:@"name"];        [book setValue:@"whilte" forKey:@"color"];        NSLog(@"%@:%@",[book valueForKey:@"name"],[book valueForKey:@"color"]);                //----属性为自定义对象操作1--对象        Author *author=[[Author alloc] init];        author.name=@"caicai";        [book setValue:author forKey:@"author"];        Author *author2=[book valueForKey:@"author"];        NSLog(@"%@",author2.name);                //----属性为自定义对象操作2--对象--路径访问        [book setValue:@"caitou" forKeyPath:@"author.name"];        NSLog(@"%@",[book valueForKeyPath:@"author.name"]);                //----属性为自定义对象操作2--对象数组--路径访问        NSMutableArray *relationBook=[NSMutableArray arrayWithCapacity:3];        for (int i=0; i<3; i++) {            Books *book=[[Books alloc] init];            NSString *name=[NSString stringWithFormat:@"job_%d",i];            [book setValue:name forKeyPath:@"name"];            [book setValue:@(12+i) forKeyPath:@"price"];            [relationBook addObject:book];        }        [book setValue:relationBook forKeyPath:@"relationbook"];        NSArray *names=[book valueForKeyPath:@"relationbook.name"];        NSLog(@"%@",names);        //kvc简单运算 sum max avg count         NSLog(@"%@",[book valueForKeyPath:@"relationbook.@sum.price"]);         NSLog(@"%@",[book valueForKeyPath:@"relationbook.@count"]);        NSLog(@"%@",[book valueForKeyPath:@"relationbook.@max.price"]);        NSLog(@"%@",[book valueForKeyPath:@"relationbook.@avg.price"]);