중화사전망 - 서예자전 - KVC 의 역할

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> 모델의 속성은 사전에 해당 키가 없을 수 있습니다.