Swift:动态对象创建

标签 swift

我正在尝试根据 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/

相关文章:

ios - 我该如何修复 "Data(contentsOf: url) crashing app"?

macos - 如何在 NSTableView 中放置和控制复选框?

swift - 调整我的 TableView 背景

ios - didEnterRegion、didExitRegion 未被调用

swift - 无法识别的选择器发送到实例

ipad - 装有 iOS 8 的 iPad 中的方向问题

Swift 处理缓慢的互联网连接

ios - Firebase 使 iMessage 扩展崩溃

ios - 加载现有的 Geofire 位置(如果存在)

regex - Swift - 将属性字符串添加到括号中的项目