0

我有一个字典,其中包含一个类字符串名称作为键,一个对应的类对象数组作为值。

它可能是许多不同的类类型,所以我想在运行时进行动态分配。

有谁知道为什么这段代码会出现编译器错误?

// 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 回答