Object-C技术学习,更多资源请访问 https://www.itkc8.com
// main.m
// OC键值编程(KVC)-Key路径
//
// Created by Goddog on 15/1/3.
// Copyright (c) 2015年 Goddog. All rights reserved.
//
/*
1.KVC除了操作属性之外,还可以操作对象的“复合属性”。(怎么感觉是初始化一个对象)
2.操作Key路径的方法:根据Key路径设置值用setValue:forKeyPath: 根据Key路径获取属性值用valueForKeyPath:
3.KVC操作对象的性能比通过setter和getter方法操作对象的性能更差,但是更加简洁、通用、灵活。
*/
#import <Foundation/Foundation.h>
#import "MyClass.h"
//定义部分
@interface Item : NSObject
//使用@property定义两个成员变量
@property (nonatomic,strong) MyClass* myClass;
@property (nonatomic,assign) int amount;
-(int) totalPrice;
@end
//实现部分
@implementation Item
-(int) totalPrice{
return _amount*(_myClass.price);
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
//创建对象
Item* item = [[Item alloc] init];
//用KVC方式为amount设置属性值
[item setValue:@"10" forKey:@"amount"];
[item setValue:[[MyClass alloc]init] forKey:@"myClass"];
//用setValue:forKeyPath设置myClass属性name的值
[item setValue:@"IOS宝典" forKeyPath:@"myClass.name"];
[item setValue:[NSNumber numberWithInt:12] forKeyPath:@"myClass.price"];
//获取值
NSLog(@"总共:%@个",[item valueForKey:@"amount"]);
NSLog(@"名字是:%@",[item valueForKeyPath:@"myClass.name"]);
NSLog(@"总价是:%@",[item valueForKeyPath:@"totalPrice"]);
}
return 0;
}
//
// MyClass.h
// OC键值编程(KVC)-Key路径
//
// Created by Goddog on 15/1/3.
// Copyright (c) 2015年 Goddog. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface MyClass : NSObject
@property (nonatomic,copy) NSString* name;
@property (nonatomic,assign) int price;
@end
//
// MyClass.m
// OC键值编程(KVC)-Key路径
//
// Created by Goddog on 15/1/3.
// Copyright (c) 2015年 Goddog. All rights reserved.
//
#import "MyClass.h"
@implementation MyClass
@end
Object-C技术学习,更多资源请访问 https://www.itkc8.com