Key-Value Coding Programming Guide 官方文件第二部分第2節 2018.9.20 第一次修正
Key-Value Coding Fundamatals--Accessing Collection Properties
訪問集合屬性
符合鍵值編碼的物件以與公開其他屬性相同的方式公開其多對多屬性。您可以像使用任何其他物件valueForKey:
和setValue:forKey:
(或它們的鍵路徑等同方法) 一樣獲取或設定集合物件。但是, 當您要操作這些集合的內容時, 使用協議定義的可變代理方法通常是最有效的。
該協議為集合物件訪問定義了三種不同的代理方法, 每個都具有一個鍵和一個鍵路徑變體方法:
-
mutableArrayValueForKey: 和 mutableArrayValueForKeyPath:
這兩個方法返回一個類似於
NSMutableArray
物件的代理物件。 -
mutableSetValueForKey: 和 mutableSetValueForKeyPath:
這兩個方法返回一個類似於
NSMutableSet
物件的代理物件。 -
mutableOrderedSetValueForKey: 和 mutableOrderedSetValueForKeyPath:
這兩個方法返回一個類似於
NSMutableOrderedSet
物件的代理物件。
當您對代理物件進行操作,向物件新增物件,從中刪除物件或替換物件時, 協議的預設實現將相應地修改基礎屬性。這比使用valueForKey:
得到一個不可變集合物件更有效,建立一個修改了內容的可變集合物件,然後使用setValue:forKey:
訊息將其儲存回物件。在許多情況下, 它也比直接使用可變屬性更有效。這些方法提供了對集合物件中儲存的物件保持鍵值觀察遵從性的額外好處 (有關詳細資訊,請參閱*Key-Value Observing Programming Guide*。
由於筆者水平有限,文中如果有錯誤的地方,或者有更好的方法,還望大神指出。 附上本文的所有 demo 下載連結,【GitHub】。 如果你看完後覺得對你有所幫助,還望在 GitHub 上點個 star。贈人玫瑰,手有餘香。