當前位置:成語大全網 - 書法字典 - KVC的角色

KVC的角色

KVC(關鍵值編碼)

1.主要功能:

1.KVC可以給壹個對象的私有變量賦值。

使用註意事項:

1 & gt;。設置鍵/鍵路徑位置的字符串必須具有相應的屬性(或_屬性)。

2 & gt之間的區別。setValue:forKey:和setValue:forKeyPath

KeyPath可以根據內部點語法進壹步找到對應的鍵。

person * p =[[personal loc]init];

p . book =[[Bookalloc]init];

[pset value:@ " 18 " forKey:@ " age "];?//不報告錯誤

[pset value:@ " 20 " for key path:@ " age "];//不報告錯誤

[pset value:@ " 300 " forKey:@ " book . price "];//報告了錯誤

[pset value:@ " 300 " for key path:@ " book . price "];//不報告錯誤

2.用於字典到模型(MJExtension框架)

使用註意事項:

1 & gt;您必須確保字典中相應的鍵可以在模型中找到相應的屬性。

2 & gt模型中的屬性在字典中可能沒有對應的鍵。

3.通過KVC取出私人變量的值。

4.模型對象到字典(理解)

person * p =[[personal loc]init];

p.name=@ "小白";

p . age = 1;

//_height是私有變量。

ns dictionary * dict =[pdictionaryWithValuesForKeys:@[@ "姓名","年齡","身高"]];

2.KVC內部實施

SetValuesForKeysWithDictionary:底層實現

//方便字典中的所有鍵值。為相應的鍵和值賦值。

[dictenumeratekeysandobjectsusingblock:^(id _非nullkey,id _非nullobj,bool * _非nullstop) {

//分配相應的鍵,值。

[items et value:objforKeyPath:key];

}];

setValue:forKeyPath的底層實現:

1.能調嗎?使用這個屬性的集合?方法。(您可以用這種方法過濾值)

2.如果沒有設定呢?方法,它會判斷是否存在與鍵值同名的成員屬性。如果有,它會直接賦值,icon = obj。

3.如果沒有,還會判斷是否有相同鍵值名稱的下劃線成員屬性,如果有,直接賦值,_icon = obj。

4.如果沒有,直接報錯。找不到對應的成員屬性(setValue:forUndefinedKey:)。

使用註意事項:

1 & gt;您必須確保字典中相應的鍵可以在模型中找到相應的屬性。

2 & gt模型中的屬性在字典中可能沒有對應的鍵。