我有一个字典,其中包含一个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以使用该类的属性和方法。
答案 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);
因此,根据您的要求,您可以使用在对象上设置的任何值。