2010-05-14 53 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"]; 

我只是想知道是否有逃脫的時期的keyPath這樣我就可以消除這種額外的步驟的方法。

回答

1

NSDictionary沒有valueforKeyPath:方法。它只是調用NSObject實現,這是你問題的根源。

也許你可以用自己的轉義字符在NSDictionary的類別中重新實現它。

+0

我不認爲我經常會遇到這個問題,以至於無法爲其編寫一個類別,所以我現在只是堅持使用額外的代碼。感謝您的澄清。 – Jonukas 2010-05-15 03:14:05

相關問題