我在使用 NSMXLParser 时遇到问题。
首先这是我的代码:
class ViewController: UIViewController, NSXMLParserDelegate {
override func viewDidLoad() {
super.viewDidLoad()
var url = NSURL(string: "http://placeholder.abc/data.xml")
var xmlParser = NSXMLParser(contentsOfURL: url)
xmlParser.delegate = self
xmlParser.parse()
}
func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String, qualifiedName qName: String, attributes attributeDict: [NSObject : AnyObject]) {
println(elementName)
}
func parser(parser: NSXMLParser, didEndElement elementName: String, namespaceURI: String, qualifiedName qName: String) {
}
func parser(parser: NSXMLParser, foundCharacters string: String) {
}
现在的问题是:一旦我实现了 didEndElement
方法,我的应用程序就会在执行以下代码行时崩溃:xmlParser.parse()
,并出现以下错误:线程1:EXC_BAD_ACCESS(代码=1,地址=0x0)
当我删除 didEndElement
方法时,代码运行正常。有人能帮我吗?谢谢!
最佳答案
几个月以来我一直在开发一个 iOS 应用程序,因此它已经通过了 Xcode 的所有测试版。该应用程序中的 XMLParser 部分具有以下签名:
func parser(parser: NSXMLParser!, didEndElement elementName: String!, namespaceURI: String!, qualifiedName qName: String!) {
...
}
这可以正常工作,不会出现错误。
当我删除感叹号时,应用程序崩溃并显示 EXC_BAD_ACCESS
NSXMLParserDelegate
的所有其他方法都具有相同的签名:所有变量都绑定(bind)为隐式展开的可选值(全部带有!)
关于ios - 实现 'didEndElement' 方法时 NSXMLParser 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26159829/