Objective-C入门17:KVC

Objective-C入门17:KVC

在 main函数 里面

#import <Foundation/Foundation.h>
#import "Person.h"
#import "Dog.h"
#import "Tiaozao.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
//      Key--Value--Coding  键值编码 (KVC)
        
//        是一种 存取值 的方式
//        通过 key 存 Value  或者通过 key 获取 Value
       
//        key是吧对象里面的 属性名 、变量名  当做一个key( 把属性名、变量名看成一个字符串来使用 )
//        以字符串的形式向对象发送消息,字符串是存取值的关键
//        给对象存取值的时候 可以选择使用 KVC
        
        Person *fengshenghai = [ [ Person alloc ] init ] ;
//        fengshenghai.name = @"" ;
//        把name这个属性名当做了一个字符串key来使用
        [ fengshenghai setValue:@"ios大牛" forKey:@"name" ] ;
//         把name这个属性名当做了一个字符串key来取值
        NSString *valueName = [ fengshenghai valueForKey:@"name" ] ;
        NSLog( @"%@" , valueName ) ;
        [ fengshenghai hhhh ] ;
        
        
        [ fengshenghai setValue : @(18) forKey:@"age" ] ;
        NSString *valueAge = [ fengshenghai valueForKey:@"age" ] ;
        NSLog(@"%@岁",valueAge );
        [ fengshenghai hhhh ] ;
//        [ fengshenghai bbb ] ;
        

        Dog *daMao = [ [ Dog alloc ] init ];
        [ daMao setValue:@(7) forKey:@"age" ];
        [ daMao setValue:@"damao" forKey:@"name" ];
        [ daMao setValue:@(100) forKey:@"weight" ];
        
        [daMao infoMessage];
        
        int suiShu =[ [ daMao valueForKey:@"age" ] intValue ]+1000;
        NSLog( @"%d" ,suiShu ) ;
        
        
        
        
//        建路径  存取值
//        用点"."来表示他是一个键路径
        
//        Dog *wangwang = [ [ Dog alloc ] init ] ;
//        Person *huluwa = [ [ Person alloc ] init] ;
//        
//        [ huluwa setValue : wangwang forKey : @"dog" ] ;
//        [ huluwa setValue:@"汪小汪" forKeyPath:@"dog.name" ] ;
//        NSString *rname = [ huluwa valueForKeyPath:@"dog.name" ] ;
//        NSLog( @"%@" , rname ) ;
//        
//        [ huluwa setValue:@(10) forKeyPath:@"dog.age" ] ;
//        NSString *rage = [ huluwa valueForKeyPath:@"dog.age" ] ;
//        NSLog( @"%@" , rage ) ;
        
  
        Tiaozao *chongzi = [ [ Tiaozao alloc ] init ] ;
        Dog *wangcai = [ [ Dog alloc ] init ] ;
        Person *fengzi = [ [ Person alloc ] init ] ;
        [ fengzi setValue : wangcai forKey : @"dog" ] ;
        [ fengzi setValue : @"虫子" forKeyPath : @"dog.tiaozao.name" ] ;
        NSString *rname = [ fengzi valueForKeyPath : @"dog.tiaozao.name" ] ;
        NSLog( @"%@" , rname ) ;
   
    }
    return 0;
}



在 Person.h 里面

#import <Foundation/Foundation.h>
@class Dog ;
@interface Person : NSObject

{
int age ;
Dog *dog ;
}

//把name当做一个 key 来使用
@property (nonatomic , copy )NSString *name ;

// 这个人 走着 看到一只狗
//观察这只狗的表情

- (void)hhhh ;
@end


在 Person.m 里面
#import "Person.h"
@implementation Person
 - (void)hhhh
{
    age += 100 ;
    NSLog( @"hhhh %@ %d" , self.name , age ) ;
}
@end


在 Dog.h 里面
#import <Foundation/Foundation.h>
@class Tiaozao ;
@interface Dog : NSObject

{
    int age ;
    NSString *name ;
    int weight ;
    Tiaozao *tiaozao ;
}

@property (nonatomic , copy ) NSString *face ;

- ( void ) infoMessage ;

@end


在 Dog.m 里面
#import "Dog.h"
@implementation Dog

- ( void ) infoMessage
{
        NSDictionary *dic =@{ @"age1":@(age),@"name1":name,@"weight":@(weight) };
    NSLog(@"%@",dic);
}


@end



在 Tiaozao.h 里面

#import <Foundation/Foundation.h>

@interface Tiaozao : NSObject

{
    NSString *name ;
}

@end



在 Tiaozao.m  里面
#import "Tiaozao.h"

@implementation Tiaozao

@end


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值