我在Objective C中有一个NSMutableArray对象。我正在根据数据文件的内容填写它,其中包含每个元素应该包含的类和参数列表。所有可能的类都继承自公共父类。
有没有办法实例化数组的每个元素而不对大量的if-else测试中的每个可能的类进行硬编码?
答案 0 :(得分:7)
您当前在数据文件中存储了类的名称以及对象的参数。
因此,您可以使用NSClassFromString
来实例化该自定义类对象并初始化其状态:
NSString *_myCustomClass = // get custom class name from data file...
id _myCustomObject = [[NSClassFromString(_myCustomClass) alloc] init];
// set up _myCustomObject's state from data file's parameters...
[_myMutableArray addObject:_myCustomObject];
[_myCustomObject release];
答案 1 :(得分:-1)
如果您也可以控制编写该数据文件,您可能会发现使用标准目标C archiving(在其他语言中称为序列化)更容易。这是一种在文件中写入和读取对象的简单方法。
答案 2 :(得分:-2)
是的,我想memset()会有所帮助