標籤:
http://blog.csdn.net/developer_zhang/article/details/12840567
1 前言
本節我們主要介紹索引值編碼,以及如何使一個類符合KVC編碼。
2 詳述
鍵-值編碼是一個對於間接訪問一個對象屬性和關係使用字元標識的機制。它支援或者關係幾個特別的Cocoa編程機制和技術,在Core Data,application scriptability,綁定技術(application scriptability和綁定技術特屬於OS X)和聲明屬性的語言特性中。我們也能夠使用索引值編碼簡化我們的程式碼。
2.1 對象屬性和KVC
對於key-value編碼(或者KVC)的核心是屬性的普通概念。一個涉及將對象壓入狀態單元的屬性。一個屬效能夠成為兩種普通類型的一種:一個屬性(例如:name,title)或者一個與其他對象的關係。關係可以是對一的或者是對多的。對多關係的值的典型代表為數組(array)或者集合(set),依賴於是否關係是有序的或者無序的。
KVC通過一個字串標示的key來定位一個對象屬性。key通常符合被對象所定義的儲存方法的名稱或者執行個體變數。key必須符合固定的慣例:必須為ASCII編碼,開始以小寫字母,沒有空格。key path是一個字串被點分割的字串keys被用於簡化對象屬性的序列的遍曆。屬性的序列的first key關聯了一個簡單的對象(employee1在下面的圖形中),隨後的key是關聯的前面的值的屬性。
2.2 使一個類符合KVC編碼
NSKeyValueCoding非正式協議使KVC稱為可能。它的兩個方法-valueForKey:和setValue:forKey:-是特別重要的因為他們當提供key的時候會獲得和設定一個屬性值。NSObject提供了一個預設的這些方法的實現,並且當一個類服從了索引值編碼,它能夠依賴於這一實現
我們如何能使得一個屬性符合KVC編碼依賴於是否這些屬性是對象的屬性,對一關係,或者對多的關係。對於這些屬性和關係,一個類必須符合至少以下的一條(key相當於property key):
(1)使用名字key,類有一個聲明屬性;
(2)它實現了儲存方法稱為key並且,如果屬性可變,setKey:(如果屬性是一個Boolean屬性,getter儲存方法擁有isKey的格式);
(3)它聲明了以key或者_key的形式的一個執行個體變數。
對於一對多關聯性實現KVC格式是更複雜的步驟。
3 結語
以上是所有內容,希望對大家有所協助。
IOS深入學習(21)之Key-value coding