私のobj-cクラスでは、文字列をオブジェクトにマッピングする辞書があります。代わりにやっての今objective-c辞書アクセスとしてのプロパティ/メソッド
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
@"value1", @"key1", @"value2", @"key2", nil];
MyClass* obj = [[MyClass alloc] initWithDictionary:dict];
、:
私がやりたいNSString* val1 = [obj value:@"key1"];
:
NSString* val1 = [obj key1]; // @"value1"
NSString* val2 = [obj key2]; // @"value2"
NSString* val3 = [obj key3]; // nil, not found
ことは可能ですか?
もちろん、これは、(a)辞書キーが有効な識別子名であることを前提としています。 (b)同じ名前の「実際の」プロパティ/メソッドはありません(これはおそらく実際のメソッドを代わりに呼び出すでしょう)。
あなたの答えはスポットライトですが、OPがなぜこのようなことをする必要があると感じるのか少し気になります。一般的に、この種の魔法をコードベースに導入することは、本当に魅力的なメリットをもたらさない場合には、慎重であるように思われます。 – jlehr
@jlehr:私はJavascriptのような辞書アクセスを探しています。私は実際にそれの理由があります。 – noamtm
@Abizern:これは*ほぼ*私が望んでいたものです。上記の例では、[obj @ "Key1"]ではなく[obj Key1]を呼び出すことができます。 – noamtm