キーはピリオドが含まれている場合:それはNSDictionaryののvalueForKeyPathを起動することは可能ですか?

StackOverflow https://stackoverflow.com/questions/2832066

質問

私はcom.apple.schedulerのplistの中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.apple.SoftwareUpdate」だけではなく、「COM」であるということです。私は別にその最初の値を取得することによって、これを回避できます:

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

私はちょうど私がこの余分なステップを排除することができるようにキーパスにピリオドをエスケープする方法があるかどうかを知りたいと思っています。

役に立ちましたか?

解決

方法:

NSDictionaryのはvalueforKeyPathを持っていません。それはちょうどあなたの問題の根本であるNSObjectの実装を呼び出します。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top