2016-06-05 3 views
0

CKRecord Swift의 클래스 지정은 setObject:forKey:을 사용하여 CKRecord의 값을 설정한다고 말합니다. 그러나 NSValueCoding 프로토콜의 일부인 setValue:forKey:으로 많은 코드 예제를 볼 수 있습니다. 누군가 다른 사람의 이점이 무엇인지 설명 할 수 있습니까?CKRecord setValue : forKey 또는 setObject : forKey

답변

2

불행히도 setValue:매우입니다.

쉬운 규칙 :

키/값 컬렉션 타입의 키에 대해 개체를 설정하는 방법은 상기 지정된 setObject: 또는 가입 키이다.

setValue:은 특별한 의미의 키 - 값 코딩 방법입니다. 예를 들어 배열의 모든 사전 (또는 사용자 정의 객체)의 동일한 속성을 한 줄로 동시에 설정할 수 있습니다. setValue:은 적절한 설정기를 사용하지 않고 리터럴 키로 사용자 정의 클래스의 속성을 설정하는 데에도 사용할 수 있습니다. 예를 들어

object.name = "foo" 

object.setValue("foo", forKey:"name") 

는 기본적으로 동일한다.

setValue:을 사용하는 예외 중 하나는 NSManagedObject입니다.이 클래스는 키 - 값 - 코딩에 크게 의존하기 때문입니다.

편집 :

요약 (rmaddy의 우수한 주석의 문자 인용, 감사) : 당신은 키 - 값 코딩을 사용하는 명확하고 구체적인 필요성이있을 때

setValue:forKey:를 사용합니다.

+0

tl; dr - 키 - 값 코딩을 명확하고 명확하게 사용해야하는 경우에만'setValue : forKey :'를 사용하십시오. – rmaddy

관련 문제