动态类类型的赋值

时间:2013-04-15 10:42:45

标签: ios objective-c cocoa

我有一个字典,其中包含一个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以使用该类的属性和方法。

2 个答案:

答案 0 :(得分:2)

为什么不使用id

id objectOfTypeMyClass = obj;

另一种选择是使用多态(如果类是由你创建的)。

答案 1 :(得分: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);

因此,根据您的要求,您可以使用在对象上设置的任何值。