중화사전망 - 서예자전 - KVC 의 역할
KVC 의 역할
1. 주요 기능:
1.KVC 는 개체의 전용 변수에 값을 지정할 수 있습니다.
사용 고려 사항:
1> 。 키/키 경로 위치를 설정하는 문자열에는 해당 속성 (또는 _ 속성) 이 있어야 합니다.
2> 의 차이. SetValue:forKey: 및 setValue:forKeyPath
KeyPath 는 내부 점 구문을 기준으로 해당 키를 추가로 찾을 수 있습니다.
Person * p = [[personal loc] init];
P.book = [[bookalloc] init];
[psetvalue: @ "18" forkey: @ "age"]; -응? //오류가 보고되지 않습니다
[psetvalue: @ "20" for keypath: @ "age"]; //오류가 보고되지 않습니다
[psetvalue: @ "300" forkey: @ "book.price"]; //오류가 보고되었습니다
[psetvalue: @ "300" for keypath: @ "book.price"]; //오류가 보고되지 않습니다
2. 사전 대 모델 (mj 확장 프레임워크)
사용 고려 사항:
1> 사전의 해당 키가 모델에서 해당 속성을 찾을 수 있는지 확인해야 합니다.
2> 모델의 속성은 사전에 해당 키가 없을 수 있습니다.
3. KVC 를 통해 개인 변수의 값을 제거합니다.
4. 모델 객체를 사전으로 (이해)
Person * p = [[personal loc] init];
P.name=@ "작은 흰색";
P.age =1;
//_height 는 개인 변수입니다.
Nsdictionary * dict = [pdictionarywithvaluesforkeys: @ [@ "이름", "나이", "키"]];
2.KVC 내부 구현
SetValuesForKeysWithDictionary: 기본 구현
//편리한 사전의 모든 키 값. 해당 키와 값에 값을 지정합니다.
[dictenumeratekeysandobjectsusingblock: (id _ 비 nullkey, id _ 비 nullobj, bool * _ 비 nullstop) {
//해당 키, 값을 할당합니다.
[items et value: objforkeypath: 키];
}];
SetValue:forKeyPath 의 기본 구현:
1. 조율 가능한가요? 이 속성의 컬렉션을 사용하시겠습니까? 방법. (이 방법으로 값을 필터링할 수 있습니다.)
2. 만약 설정되지 않았다면? 키 값과 이름이 같은 멤버 속성이 있는지 여부를 결정하는 메서드입니다. 있는 경우 icon = obj 를 직접 할당합니다.
3. 그렇지 않은 경우 동일한 키 값 이름의 밑줄 멤버 속성도 있는지 확인하고, 있는 경우 직접 값을 지정합니다. _icon = obj.
4. 그렇지 않으면 직접 오류를 보고합니다. 해당 멤버 속성 (setValue:forUndefinedKey:) 을 찾을 수 없습니다.
사용 고려 사항:
1> 사전의 해당 키가 모델에서 해당 속성을 찾을 수 있는지 확인해야 합니다.
2> 모델의 속성은 사전에 해당 키가 없을 수 있습니다.