当' didEndElement'时,NSXMLParser崩溃方法实现

时间:2014-10-02 11:28:43

标签: ios swift nsxmlparser

我在使用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方法时,代码运行正常。有人能帮我吗?谢谢!

1 个答案:

答案 0 :(得分:3)

我正在开发一个iOS应用程序几个月以来它已经通过Xcode的所有beta版本。该应用程序中的XMLParser部分具有以下签名:

func parser(parser: NSXMLParser!, didEndElement elementName: String!, namespaceURI: String!, qualifiedName qName: String!) {
    ...
}

这没有错误。

当我删除感叹号时,应用程序会崩溃EXC_BAD_ACCESS

NSXMLParserDelegate的所有其他方法都具有相同的签名:所有变量都绑定为隐式解包的选项(全部带有!)