0

Class 文字列名をキーとして、対応するクラス オブジェクトの配列を値として含む辞書があります。

多数の異なるクラス タイプが入ってくる可能性があるため、実行時に動的な割り当てを行いたいと考えました。

このコードでコンパイラ エラーが発生する理由を知っている人はいますか?

// Where obj is an object of type MyClass
Class myClass = NSClassFromString(@"MyClass");
myClass *objectOfTypeMyClass = obj;

アップデート:

これが私がそれを実装した方法です:

Class interestClass = NSClassFromString(classProvidedAsString);
id interest = [interestClass createNewInterestUsingManagedObjectContext:backgroundContext];
[interest setValue:title forKey:@"title"];
[interest addLikedByObject:aFriend];

title は受け入れることができるすべてのオブジェクトのプロパティであり、 createNewInterest はすべてのオブジェクトが持つメソッドです。

問題は、id を InterestClass としてキャストして、そのクラスのプロパティとメソッドを使用しようとしたことでした。

4

2 に答える 2

2

なぜ使わないのですidか?

id objectOfTypeMyClass = obj;

別のオプションは、ポリモーフィズムを使用することです (クラスが作成された場合)。

于 2013-04-15T11:04:40.170 に答える
0

次の方法で実行できます。

NSObject *object=[NSObject new];//this can hold any kind of object

object=@"my name is lakhan";//as string
NSLog(@"%@",object);

object=@[@(10),@(50)]; //now working as array
NSLog(@"%@",object);

object=@{@"k1": @"10", @"k2":@"20"}; // as dictionary
NSLog(@"%@",object);

したがって、要件に応じて、オブジェクトに設定する必要がある値を使用できます。

于 2013-04-15T10:52:46.407 に答える