0

(議論のために) iOS プロジェクトにいくつかの処理を含むクラスがあるとします。

実行時に Objective C オブジェクトにプロパティを動的に追加できるかどうか知りたいですか?

キーと値のパターンが固定されていない NSDictionnary インスタンスからオブジェクトを動的に作成する必要があります。そして、一般的な方法でオブジェクトを作成するには、NSDictionnary のキーを属性名に使用し、Val を属性値に使用する必要があります。

-(NSMutableArray *) getFromJSON:(NSString *)json
{
JSONDecoder *decoder = [[JSONDecoder alloc] init];
NSData *jsonData = [json dataUsingEncoding:NSUTF8StringEncoding];
NSArray *array = [decoder objectWithData:jsonData];
NSMutableArray *data = [[NSMutableArray alloc] initWithArray:array];
for (int i = 0; i < [data count]; i++) {
    NSDictionary *modelData = [data objectAtIndex:i];
    // .... Object attributes creation goes here

この行で、この Dic (modelData) から、Dic のキーに対応する属性名を持つオブジェクトを作成する必要があります。作成されたオブジェクト (ダミー クラス) の属性は次のようになります。

@property (nonatomic, strong) key0;
@property (nonatomic, strong) key1;
@property (nonatomic, strong) key2;

.. 等々。それは可能ですか?

ModelManager と、いくつかの特定のアクションを持つ ModelManager クラスから継承するさまざまな Model サブクラスを作成しています。ModelManager クラスでは、NSObjects のリストを含む NSMuttableArray を作成する汎用メソッドを実行する必要があります。このオブジェクトは、取得されたデータに対応します。 Json リクエストから。すべての Json リクエストは、1 つのモデルに固有のデータを返します。サブクラスでそれを継承し、その動的オブジェクトをサブクラスの型にキャストするための一般的な方法でこのメソッドを実行する方法を探しています。私が見つけた唯一の一般的な方法は、属性が作成されたダミークラスを作成することですjson データ キーから、後でこの NSObject を Model サブクラス クラスにキャストします。

4

1 に答える 1

0

プロパティとして宣言するだけです。

@property (nonatomic, strong) NSDictionary * dic;

また

@property (nonatomic, strong) NSMutableDictionary * dic;

その後、実行時に必要な方法で作成します。

self.dic = @{randomKey : randomValue};

また

self.dic = [@{randomKey : randomValue} mutableCopy];
于 2013-07-23T11:07:38.377 に答える