我正在尝试根据 XML 文件的输出动态创建对象。如果还有其他关于这个主题的帖子,我很抱歉,我什至不知道这叫什么。基本上我想创建一堆可以属于任何类的对象。简而言之,当调用 NSXMLParser 的“didStartElement”时,我想创建一个“elementName”类型的对象并将其堆叠到我的对象堆栈中。下面的代码不起作用,只是想说明我要完成的工作。通常我只会将“objectStack.append(object) as object”放入,但在这种情况下,在 XML 解析器扫描元素之前,我不知道对象类型是什么。我相信 NSClassFromString 是执行此操作的方法,但它不起作用。
func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) {
objectStack.append(NSClassFromString(elementName))
}
如有任何帮助,我们将不胜感激。即使你能给我指出正确的方向。
最佳答案
成功了,问题是我需要类的完全限定名称和项目名称。
工作代码:
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)!)
}
关于Swift:动态对象创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38535632/