iOS核心筆記—KVC機制

來源:互聯網
上載者:User

標籤:運行時   方式   賦值   nbsp   同名   返回字典   識別   沒有   ios   

1、KVC(索引值編碼)【1】、什麼是KVC?
  • KVC俗稱索引值編碼,就是可以通過一系列方法(KVC方法)根據對象的屬性名稱作為key值,傳入具體的value值賦值給對象的屬性。
【2】、KVC的作用
  • 通常,當字典中的key與對象的屬性名稱完全相同時,這是我們能夠通過使用KVC將字典中的value值設定給對象的屬性;不過,切記:對象中的屬性只能比字典中的key多而不能少,一旦字典中的key在對象中找不到與之對應的屬性,程式崩潰;這也是KVC一個最致命的缺點。
【3】、KVC三種形式
  • key中不包含路徑:

    • 使用setValue:forKey:方法給對象屬性賦值: 

    • 使用valueForKey方法取出對象的屬性值: 

    • 數組使用valueForKey方法且key中不包含路徑,將會抽取數組中所有對象的對應屬性群組成一個新的數組返回: 

  • key中包含路徑:

    • 使用setValue:forKeyPath:方法給對象屬性賦值: 

    • 使用valueForKeyPath方法取出對象的屬性值: 

    • 同理,數組使用valueForKeyPath方法,也能夠將數組中對象的key屬性抽取出來組成一個新的數組;

    • 數組使用valueForKeyPath方法,在key中添加@符號 + 要執行的計算操作;可以實現指定的計算功能: 

  • 字典使用KVC:

    • 字典使用setValuesForKeysWithDictonary:方法,將字典中key對應的value值設定到對象的對應屬性;不過切記字典中的key在對象中一定要有與之對應的屬性(即:對象中的屬性只能多於字典中的key),如果字典中的key在對象中找不到與之對應的屬性,程式崩潰。 

    • 對象使用dictionaryWithValuesForKeys:方法,通過傳入對象的屬性數組,返回字典;字典中將對象的屬性以索引值對的形式存放。 

2、使用KVC注意事項:
  • 使用KVC不包含路徑方式,給對象屬性賦值、或者根據key從對象中取值時,key中一定不能包含路徑;因為,不帶Path的KVC方法預設將傳入的字串當成一個完整的key,並不能識別其中的路徑(即:key中的.符號);如果傳入路徑程式崩潰。 

  • 數組使用KVC不包含路徑方式,只能執行計算數組長度的功能;不能執行其他動作,否則,程式將會崩潰。

    • 執行計算數組的長度功能: 

    • 執行計算長度功能並在key中添加屬性名稱時,程式崩潰: 

    • 執行求和功能,程式崩潰: 

  • 數組使用KVC的forKeyPath方法計算長度時,傳入對象的屬性名稱無效;返回整個數組的長度: 

總結:
  • KVC使用forKey類型方法時,key中不能傳入路徑;因為,forKey類型方法只會將傳入的字串當成整個key;在對象中尋找屬性時沒有找到與key同名的屬性時程式報錯。

  • 數組使用forKey類型的方法時,只能執行計算長度的功能;即:array.count,不過,在key中必須使用@符號,表明這是在執行計算操作。

  • KVC使用forKeyPath類型方法時,運行時系統能夠根據key中的路徑找到與之對應的對象的屬性;進行賦值、取值操作。

  • KVC使用forKeyPath類型方法時,能夠在將要執行的計算操作結合@符號添加到key中;執行計算功能。

  • 字典使用KVC時,能夠根據字典中的鍵對應的值設定到對象對應的屬性中;也能根據對象屬性數組,將對象的屬性打包到字典中使用。

 

iOS核心筆記—KVC機制

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.