我在使用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()
出现此错误:Thread 1: EXC_BAD_ACCESS (code=1, address=0x0)
当我删除didEndElement
方法时,代码运行正常。有人能帮我吗?谢谢!
答案 0 :(得分:3)
我正在开发一个iOS应用程序几个月以来它已经通过Xcode的所有beta版本。该应用程序中的XMLParser部分具有以下签名:
func parser(parser: NSXMLParser!, didEndElement elementName: String!, namespaceURI: String!, qualifiedName qName: String!) {
...
}
这没有错误。
当我删除感叹号时,应用程序会崩溃EXC_BAD_ACCESS
NSXMLParserDelegate
的所有其他方法都具有相同的签名:所有变量都绑定为隐式解包的选项(全部带有!)