我正在用 Python 编写一个脚本,该脚本从自定义文本中读取并从中生成 Objective-C 代码。正文结构如下:
<XClassName> {
property_name_1 {
var_name_1: var_value_1
var_name_2: var_value_2
property_name_2 {
var_name_3: var_value_3
}
property_name_2 {
var_name_3: var_value_4
}
}
property_name_3 {
}
}
产生这样的Objective-C代码:
XClassName* object = [[XClassName alloc] init];
object.propertyName1 = [[[object.propertyName1 class] alloc] init];
object.propertyName1.varName1 = varValue1;
object.propertyName1.varName2 = varValue2;
object.propertyName2Array = [NSMutableArray array];
{
PropertyName2Class propertyName2 = [[PropertyName2Class alloc] init];
propertyName2.varName3 = varValue3;
[object.propertyName2Array addObject:propertyName2];
}
{
PropertyName2Class propertyName2 = [[PropertyName2Class alloc] init];
propertyName2.varName3 = varValue4;
[object.propertyName2Array addObject:propertyName2];
}
object.propertyName3 = [[[object.propertyName3 class] alloc] init];
这很好,只是PropertyName2Class
在脚本运行时不知道。现在我必须手动查找对象数组预期元素的类名,但这违背了让脚本自动化它的目的。
有没有办法在不知道其类名并为其属性赋值的情况下动态创建对象?就像是:
id classObject = ...; // How to instantiate a dynamic unknown class?
classObject.property1 = 1;
classObject.property2 = @"Hello World!";
有任何想法吗?