zoukankan      html  css  js  c++  java
  • 对象属性操作-包含kvc---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"]);
            
    
  • 相关阅读:
    vue使用axios调用api接口
    vue引用echarts
    C# 倒计时,显示天,时,分,秒。时间可以是从数据库捞出来
    DataGridView 控件操作大全 (内容居中显示,右键绑定菜单)
    Oracle使用row_number()函数查询时增加序号列
    Oracle 相关操作SQL
    oracle rac切换到单实例DG后OGG的处理
    oracle dg库因为standby_file_management参数导致应用停止
    oracle rac与单实例DG切换
    oracle rac搭建单实例DG步骤(阅读全篇后再做)
  • 原文地址:https://www.cnblogs.com/clarence/p/3917299.html
Copyright © 2011-2022 走看看