【非凡程序员】KVC学习

KVC可以动态的修改类属性,它提供了一种使用字符串而不是访问器方法去访问一个对象实例变量的机制,主要用到的方法有:
- (id)valueForKey:(NSString *)key;
- (void)setValue:(id)value forKey:(NSString *)key;
- (id)valueForKeyPath:(NSString *)keyPath;
- (void)setValue:(id)value forKeyPath:(NSString *)keyPath;

实例:微博转发用KVC模式实现

  1、person类中person.h文件代码是:

 #import <Foundation/Foundation.h>
@class weibo;
@interface person:NSObject
@property(nonatmic,weak)NSString *name;
@property(nonatmic,assign)int age;
@property(nonatmic,weak)NSString *birthday;
@property(nonatmic,weak)NSString *sign;
@property(nonatmic,weak)weibo *weibo;
@end

2、weibo类中weibo.h文件代码是:

   #import <Foundation/Foundation.h>
@class person;
@interface weibo:NSObject
@property(nonatmic,weak)NSString *title;
@property(nonatmic,weak)NSString *content;
@property(nonatmic,weak)NSString *date;
@property(nonatmic,weak)person *sendperson;
@property(nonatmic,weak)person *resendperson;
@end

3、在main.m页面中的代码实现部分是:

person *Author=[[person alloc]init];
weibo *News=[[weibo alloc]init];
[Author setWeibo:News];
[Author setValue:@"Alice" forKey:@"name"];
[Author setValue:@"随手测智商" forKeyPath:@"weibo.title"];
person *resend=[[person alloc]init];
[resend setValue:@"Hilary" forKey:@"name"];
[weibo setResendperson:resend];
[resend setValue:@"随手测智商" forKeyPath:@"weibo.title"];
NSLog(@"%@发了一篇%@被%@转发",[Author  valueForKeyPath@"weibo.title"],[resend valueForKey:@"name"]);
运行的结果是:Alice发了一篇随手测智商被Hilary转发。

你可能感兴趣的:(【非凡程序员】KVC学习)