5

com.apple.schedulerplistでrepeatIntervalキーの値を取得しようとしています。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」だけでなく、実際には「com.apple.SoftwareUpdate」であるということです。最初の値を個別に取得することで、これを回避できます。

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

この余分なステップを排除できるように、キーパスのピリオドをエスケープする方法があるかどうかを知りたかっただけです。

4

1 に答える 1

1

NSDictionaryにはvalueforKeyPath:メソッドがありません。問題の根本であるNSObject実装を呼び出すだけです。

たぶん、あなたはそれをあなた自身のエスケープ文字でNSDictionaryのカテゴリーに再実装することができます。

于 2010-05-14T15:29:00.103 に答える