如何创建名称存储在字符串中的类的对象?

时间:2014-03-04 10:53:23

标签: objective-c

创建对象时,我们使用语法

Item *xyz = [[Item alloc] init];

如果类的名称,即“Item”存储在核心数据数据库中,当然可以将其带入字符串变量......

如何实例化对象?

2 个答案:

答案 0 :(得分:2)

将类转换为字符串:

NSString* className = NSStringFromClass([Item class]);

然后您可以存储className

走另一条路:

Class theClass = NSClassFromString(className);
id    xyz = [[theClass alloc] init];

答案 1 :(得分:2)

您可以使用NSClassFromString(@"ClassName");

执行此操作
Class reqdClass = 
id item = [[NSClassFromString(@"ClassName") alloc]init];

反过来说,你可以使用

NSString *stringClass = NSStringFromClass([Item class]);

设置以这种方式实例化的对象的属性:

@try 
{
  [item setValue:@"etc" forKey:@"property1"];
}
@catch (NSException *e) 
{
    if ([[e name] isEqualToString:NSUndefinedKeyException]) 
    {
        NSLog(@"property not recognized");
    }
}