ios - 实现 'didEndElement' 方法时 NSXMLParser 崩溃

标签 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(),并出现以下错误:线程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/

相关文章:

iphone - iOS 6.1的PhoneGap在启动时显示奇怪的警报,并在加载屏幕时挂起

swift - 使用map_Bump初始化SCNNode

ios - 如何在 swift 中将图像 url (动态)分配给特定 emp id 的 ImageView

swift - Xcode 6/SpriteKit/Swift 中的场景大小

objective-c - 收到服务器响应后解析 UITableViewCell 中的 xml

iphone - NSObject子类中的NSXMLParser切换线程

ios - UIKit - 使用 Plist 检索图像

ios - 将日期从时区转换为设备本地时区和日期

ios - 如何通过不同的用户操作捕获所有 iOS 推送通知,包括点击应用程序图标

objective-c - 为 NSXMLParser 设置委托(delegate),给出 SIGABRT 错误