2009-12-31 7 views
4

NSMutableDictionary의 키 값은 문자열 일뿐입니다.NSMutableDictionary 키 값

개체를 사용하려했지만 경고 메시지가 표시됩니다. docs 가입일

+3

키 - 값 코딩을 사용할 때 키는 문자열이어야합니다. 하지만 그렇지 않으면, 그들은 NSCopying – newacct

답변

6

: 일반적

는, 키 (아래 프로토콜 참조가 NSCopying 준수한다) 개체 수 있지만 참고 수 부호화 키 값을 사용할 때 키는 문자열이어야합니다 ( 키 - 값 코딩 기본 사항 참조).

경고는 무엇입니까?

+0

을 구현하는 모든 것이 될 수 있습니다. 제 클래스는 protocal을 구현하지 않았습니다. – Mel

+0

예 - 확실히 당신이 당신의 객체에 "해시"메소드를 구현했는지 확인하십시오. 그렇지 않으면 사전에 두 개의 서로 다른 개체가 나타나게 할 수 있습니다. –

3

모든 개체를 사용할 수 있지만 개체는 -[NSObject hash], -[NSObject isEqual:]NSCopying 프로토콜을 구현해야합니다. 당신이 NSMutableDictionary의 헤더 파일을 살펴 경우

+0

잘 NSObject에서 상속 한 모든 객체는'-hash'를 구현합니다. '-isEqual :'을 오버라이드 한 경우에만'-hash'가'-isEqual :'과 호환된다는 것을 확인해야합니다. – newacct

0

, 추가 기능은 키로 ID를 수행 할 수 있습니다

- (void)setObject:(id)anObject forKey:(id)aKey; 
- (void)removeObjectForKey:(id)aKey; 

그래서 당신은 키와 값으로 거의 아무것도 사용할 수 있습니다.