티스토리 뷰
발생일: 2016.02.29
키워드: NSDictionary, NSMutableDictionary, NSKeyValueCoding, Key-Value Coding, 키-값 코딩, KVC
문제:
사전 객체에서 valueForKey를 호출할 때, 키 앞에 @를 넣는 코드가 있다.
뭘 의미하는 걸까?
해결책:
사전 클래스 NSDictionary 와 NSMutableDictionary 는 NSKeyValueCoding 프로토콜의 메서드를 제공해서 키-값 코딩에 대응한다.
NSDictionary 에는 다음 메서드가 정의되어 있다.
- (id) valueForKey: (NSString *)key;
키 문자열의 앞 부분이 '@'로 시작하는 경우 슈퍼 클래스의 valueForKey: 를 호출하고, 그렇지 않은 경우엔 objectForKey: 를 호출한다.
예)
@interface NSMutableDictionary (MyDic)
- (NSString *)foo;
@end
@implementation NSMutableDictionary (MyDic)
- (NSString *)foo {
return @"I am KVC foo value";
}
@end
int main(void) {
NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
[dic setObject:@"foovalue" forKey:@"foo"];
NSLog(@"%@", [dic valueForKey:@"foo"]); //-> foovalue
NSLog(@"%@", [dic valueForKey:@"@foo"]); //-> I am KVC foo value
return 0;
}
반응형
댓글
공지사항