0

多くのメタデータを使用して動的オブジェクトを管理するかなり複雑なシステムをコーディングしています。私はさまざまな Objective-C ランタイム機能を使用しています。さまざまなクラス内のプロパティである変更可能な辞書に追加したいと考えています。クラスタイプとプロパティ名がわかっている場合にこれを実行したいのですが、割り当てを「ハードコード」したくありません。ハードコーディングした場合、これを行うことができます:

[[(myknownclass*)localClassObjectInstance knownDictionary] setObject:value forKey:key];

しかし、私がやりたいことは次のようなものです:

[[unknownClassObjectInstance {aStringContainingTheDictionaryName}] setObject:value forKey:key];

実行時にプロパティの名前しかない場合、変更可能な辞書プロパティを参照するにはどうすればよいですか?

4

1 に答える 1

0

-valueForKey:メソッドを実行するために使用できます。

[(NSMutableDictionary*)[inst valueForKey:@"whateverMethodName"] setObject:o forKey:k];

または、代わりに、使用できますperformSelector:

SEL dictGetter = NSSelectorFromString(@"whateverMethodName");
NSMutableDictionary* dict = [inst performSelector:dictGetter];
[dict setObject:o forKey:k];
于 2012-06-07T08:32:25.183 に答える