KVC類似于java中的反射,它是通過一個(gè)字符串 key 來獲取和設(shè)置對應(yīng)類中成員屬性的值
而key就是用來遍歷某一個(gè)類,去查找類內(nèi)部是否有與key同名的成員屬性
所以對于KVC來說,成員屬性無私有 共有之分,只要在類中,只要能找到相對應(yīng)的就可以設(shè)置值
作用:
1. 給私有的成員屬性賦值
2. 系統(tǒng)底層的給成員屬性賦值都是采用KVC
演示代碼
目前成都創(chuàng)新互聯(lián)已為數(shù)千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、福貢網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。 1 #import <Foundation/Foundation.h>
2 #import "Person.h" 3 int main(int argc, const char * argv[]) {
4 @autoreleasepool {
5
6 // // 直接為對象的屬性賦值
7 // Person *p1 = [[Person alloc] init];
8 // p1.name = @"張三";
9 //
10 // Dog *chihuahua = [[Dog alloc] init];
11 // chihuahua.name = @"吉娃娃";
12 // p1.dog = chihuahua;
13 //
14 // //NSLog(@"%@ --- %@", p1.name, p1.dog.name);
15 //
16 //
17 //
18 //
19 // // 通過kvc的方式為對象賦值
20 // Dog *husky = [[Dog alloc] init];
21 // husky.name = @"哈士奇";
22 //
23 //
24 // [p1 setValue:@"李四" forKeyPath:@"name"];
25 // [p1 setValue:@10 forKeyPath:@"age"];
26 // [p1 setValue:husky forKeyPath:@"dog"];
27 //
28 //
29 // NSLog(@"%@---%d", p1.name, p1.age);
30 // NSLog(@"%@", p1.dog.name);
31
32
33 // //-----------------------------------
34 // Person *p1 = [[Person alloc] init];
35 //
36 // NSString *value = @"husky@yahoo.com";
37 //
38 // NSString *property = @"email";
39 //
40 //
41 // [p1 setValue:value forKeyPath:property];
42 //
43 // NSLog(@"%@", p1.name);
44 //
45 // NSLog(@"%@", p1.email);
46
47
48 //------------------------------
49 // Person *p1 = [[Person alloc] init];
50 // Dog *d = [[Dog alloc] init];
51 //
52 // [p1 setValue:@"rzc" forKeyPath:@"name"];
53 // [p1 setValue:@"rzc@yahoo.com" forKeyPath:@"email"];
54 // [p1 setValue:@18 forKeyPath:@"age"];
55 // [p1 setValue:d forKeyPath:@"dog"];
56 //
57 // // @"dog.name" 這個(gè)就叫做keyPath 或者叫 "屬性的路徑"
58 // [p1 setValue:@"哈士貓" forKeyPath:@"dog.name"];
59 // NSLog(@"%@---%d---%@--%@",p1.name,p1.age, p1.email, p1.dog.name);
60
61
62 // NSDictionary *bz = @{
63 // @"name" : @"任智超",
64 // @"age" : @28,
65 // @"email" : @"rzc0714@163.com",
66 // @"dog" : @{@"name" : @"加肥貓"}
67 // };
68 //
69 // [p1 setValuesForKeysWithDictionary:bz];
70 // NSDictionary *dogDict = (NSDictionary *)p1.dog;
71 // NSLog(@"%@---%d---%@--%@",p1.name,p1.age, p1.email, dogDict[@"name"]);
72
73
74
75 //---------------------------------------------------
76 // Person *p1 = [[Person alloc] init];
77 // p1.name = @"張三";
78 //
79 // Dog *chihuahua = [[Dog alloc] init];
80 // chihuahua.name = @"吉娃娃";
81 // p1.dog = chihuahua;
82 //
83 // NSString *name = [p1 valueForKeyPath:@"name"];
84 // NSString *dogName = [p1 valueForKeyPath:@"dog.name"];
85 //
86 // NSLog(@"%@----%@", name, dogName);
87
88
89
90 //------------把對象轉(zhuǎn)成字典--------------------------------------- 91 Person *p1 = [[Person alloc] init];
92 p1.name = @"張三";
93 p1.age = 15;
94 p1.email = @"zs@yahoo.com";
95
96 Dog *chihuahua = [[Dog alloc] init];
97 chihuahua.name = @"吉娃娃";
98 p1.dog = chihuahua;
99
100 // 把對象轉(zhuǎn)成字典101 NSDictionary *dict = [p1 dictionaryWithValuesForKeys:@[@"name", @"age", @"email", @"dog"]];
102
103 NSLog(@"%@", dict);
104
105 NSLog(@"%@", [dict[@"dog"] class]);
106 NSLog(@"%@", [dict[@"dog"] name]);
107
108
109
110 }
111 return 0;
112 }
分享題目:IOS的KVC-創(chuàng)新互聯(lián)
分享路徑:http://aaarwkj.com/article12/dddogc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、標(biāo)簽優(yōu)化、品牌網(wǎng)站制作、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站排名、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容