iOS開發 - KVC

1 KVC(key - value coding )的基本概念

1>是一種間接更改對象狀態(或者說屬性值)
2>本質特征:采用字符串來標示對象的屬性變量,并通過這個標示來更改對象狀態

2 實現方法

1>存值:[對象 setValue :@“” forKey:@“”];
2>取值:[對象 valueForKey:@“”];

3 鍵路徑:訪問這個類中的屬性的屬性

1>取值:valueForKeyPath
2>存值:forKeyPath

4

如果用setValue forKey 如果寫才key不存在,沒定義,重寫setValue forKey方法,自己可以打印出來對應的提示信息,系統就不會蹦掉了

5

如果對標量設置nil(nil == 0)會觸發setNilValueKey 方法,也回蹦,所以也可以重寫setNIlValueKey 方法

6
     //person2類型不確定,所以不能直接對屬性賦值
     Person2.age = 10;
     //person2是對象,所以可以調用父類NSObject的setValue forKey方法
     id person2 = person;
     [person2 setValue:@"hahha" forKey:@"name"];
     [person2 valueForKey:@"name"]; 
    //編譯不會看key存在否,只有到運行時候才檢測,不存在就調用setValueForUndedinedKey
7

設置時,如果名字是小寫,首字母大寫也能識別,但是全大學不能識別;加下劃線,也可以識別
獲取時,如果名字是小寫,首字母大寫,也不能識別;加下劃線也都能識別(對在主函數內的下劃線)

8 鍵路徑和kvc的區別

鍵路徑:當前對象,有其他類為自己的成員變量,通過當前對象的成員變量,找這個成員變量的成員變量,,,也就是說給成員變量的成員變量賦值(設置成員變量的成員變量,可以寫兩個點,a.student.name 來實現,別忘了包含頭文件,別忘記兩個都有set get方法(第一個點是get方法,第二個點是set方法))
kvc:對當前對象的成員變量賦值

9用鍵路徑的時候

一個類a是當前類s的成員變量
要先新建一個a,并把他賦值給s作為他的成員變量,
然后再用鍵語法,給a的成員變量賦值
不然,s就沒有a的對象,怎么給對象的成員變量賦值

10

鍵路徑不限定長度,就是你可以給 成員變量的成員變量的……的成員變量賦值

11 kvc可點語法關系

屬于正交關系,也就說沒關系,點語法就是調用get set方法

12KVC 在集合中的使用

1 >創建一個日期的方法

     //NSDate用法
     //1.創建一個日歷對象 -- 就是獲取當前日歷
       NSCalendar *cal = [NSCalendar currentCalendar];   
     //2.創建日期的組成部分
     NSDateComponents *com = [[NSDateComponents alloc] init];
     com.year = 1995;
     com.month = 5;
     com.day = 1;
     NSDate *date1 = [cal dateFromComponents:com]; 
    stu1.date = date1;//吧這個日期賦值給學生的出生日期

2 >打印出學生的所有身高

    NSArray *strArr1 = @[stu1,stu2,stu3];
     //求身高最高的學生
     NSNumber *maxHight = [strArr1 valueForKey:@"height"]; 
    NSLog(@"%@",maxHight); 

3 >打印出學生最高的身高

    NSArray *strArr1 = @[stu1,stu2,stu3];
    //求身高最高的學生 
    NSNumber *maxHight = [strArr1 valueForKeyPath:@"@max.height”]; //里面有兩個@ 
    NSLog(@"%@",maxHight);
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • KVC鍵值編碼 首先我們先了解下什么是KVC:KVC:Key Value Codeing 鍵值編碼,ios提供的一...
    愛吃魚的小灰閱讀 531評論 0 3
  • KVC(Key-value coding)鍵值編碼,單看這個名字可能不太好理解。其實翻譯一下就很簡單了,就是指iO...
    黑暗中的孤影閱讀 49,999評論 74 441
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結起來就是把...
    Dove_iOS閱讀 27,217評論 30 472
  • KVC(Key-value coding)鍵值編碼,單看這個名字可能不太好理解。其實翻譯一下就很簡單了,就是指iO...
    Fendouzhe閱讀 687評論 0 6
  • KVC(Key-value coding)鍵值編碼,單看這個名字可能不太好理解。其實翻譯一下就很簡單了,就是指iO...
    朽木自雕也閱讀 1,591評論 6 1