Swift:动态对象创建

时间:2016-07-22 21:39:56

标签: swift

我正在尝试根据XML文件的输出动态创建对象。如果有关于这个主题的其他帖子我很抱歉,我甚至不知道这叫什么。基本上我想创建一个可以是任何类的对象堆栈。简而言之,当" didStartElement"调用NSXMLParser,我想创建一个" elementName"类型的对象。并将其堆叠到我的对象堆栈。下面的代码不起作用,只是试图说明我想要完成的任务。通常我会把" objectStack.append(object)作为对象"但在这种情况下,我不知道对象类型将是什么,直到XML解析器扫描元素。我相信NSClassFromString是这样做的方法,但是它没有用。

func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) {

    objectStack.append(NSClassFromString(elementName))

}

非常感谢任何帮助。即使你能指出我正确的方向。

1 个答案:

答案 0 :(得分:1)

搞定了,问题是我需要类的完全限定名,带有项目名称。

工作代码:

var objectStack = [AnyClass]()
func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) {

    var className = String(NSString(format: "MyProject.%@", elementName))
    objectStack.append(NSClassFromString(className)!)
}