2010-05-14 6 views
5

com.apple.scheduler plist에서 repeatInterval 키 값을 가져 오려고합니다. 그래서 같은 방법을 : 난 그냥있는 NSDictionary의 valueForKeyPath을 사용하고 싶습니다키에 마침표가 포함되어 있으면 NSDictionary의 valueForKeyPath를 호출 할 수 있습니까?

CFPropertyListRef value; 
value = CFPreferencesCopyValue(CFSTR("AbsoluteSchedule"), 
           CFSTR("com.apple.scheduler"), 
           kCFPreferencesCurrentUser, 
           kCFPreferencesCurrentHost); 
NSNumber *repeatInterval = [(NSDictionary *)value valueForKeyPath:@"com.apple.SoftwareUpdate.SUCheckSchedulerTag.Timer.repeatInterval"]; 

그러나이 문제는 첫 번째 키는 정말 "com.apple.SoftwareUpdate"이 아니라 "COM"는 것이다. 나는 따로 첫 번째 값을 얻어서이 문제를 가져올 수 있습니다

NSDictionary *dict = [(NSDictionary *)value valueForKey:@"com.apple.SoftwareUpdate"]; 
NSNumber *repeatInterval = [dict valueForKeyPath:@"SUCheckSchedulerTag.Timer.repeatInterval"]; 

가 난 그냥이 추가 단계를 제거 할 수 있도록 키 패스의 기간을 탈출 할 수있는 방법이 있는지 알고 싶어.

답변

1

NSDictionary에는 valueforKeyPath : 메서드가 없습니다. 문제의 근원 인 NSObject 구현을 호출합니다.

어쩌면 NSDictionary의 범주에서 고유 한 이스케이프 문자로 다시 구현할 수 있습니다.

+0

필자는이 문제를 범주 작성을 정당화하기에 충분할 정도로 자주 만날 것이라고 생각하지 않으므로 지금은 여분의 코드 줄을 고집 할 것입니다. 해명 해줘서 고마워. – Jonukas

관련 문제