2013-05-11 5 views
-3
난 작은 모델 클래스의 인스턴스에 데이터를 할당 할 키 - 값 코딩을 사용하려고

:respondsToSelector는 : 선택하지만 setValue에 대한 true를 돌려 : forKey을 : 다음 인해 실패 정의되지 않은 키

SEL selectorName = NSSelectorFromString(elementName); 
if ([self.fixtureItem respondsToSelector:selectorName]) 
{ 
    [self.fixtureItem setValue:self.currentElementData forKey:elementName]; 
} 

elementNamerespondsToSelector: true를 반환하지만 setValue:forKey: 후 제기 '설명'인 NSUnknownKeyException : '[setValue의 : forUndefinedKey :] :이 제공자 라이선스 계약으로 인해 캐치되지 않는 예외'NSUnknownKeyException ', 이유는 응용 프로그램 종료

s는 키 설명에 대해 키 값 코딩을 준수하지 않습니다. '

respondsToSelector:이 true를 반환하지만 setValue:forKey:의 키가 '정의'키가 실제로 정의되지 않았다고보고하는 이유는 무엇입니까?

+0

fixtureItem의 유형은 무엇입니까? – giorashc

+1

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/Reference/NSObject.html#//apple_ref/occ/intfm/NSObject/description –

+0

fixtureItem은 인스턴스입니다. 간단한 모델 클래스의 : @interface FixtureItem : NSObject {} –

답변

3

개체가 선택기 @selector(description)에 응답하지만 @selector(setDescription:)에 응답하지 않으므로 궁극적으로 setValue:forKey:이 호출됩니다.

+0

고맙습니다. 지금은 분명합니다. –

2

실제로 개체가 셀렉터 description에 응답하지만 (NSObject- 모든 개체가 수행하므로) 설명은 으로 설정 가능하지 않습니다.입니다. 전달하는 선택자는 setDescription:이 아닌 getter description입니다.