我正在尝试根据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))
}
非常感谢任何帮助。即使你能指出我正确的方向。
答案 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)!)
}