【问题标题】:NSXMLParser crashes when 'didEndElement' method is implemented实现 'didEndElement' 方法时 NSXMLParser 崩溃
【发布时间】:2014-10-02 11:28:42
【问题描述】:

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

【问题讨论】:

    标签: ios swift nsxmlparser


    【解决方案1】:

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

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

    这可以正常工作。

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

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

    【讨论】:

    • 这在 Xcode 6.1 中对我不起作用。起初它似乎可以工作,但这只是因为该函数不再算作委托函数并且没有被调用。
    猜你喜欢
    • 2023-03-15
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多