我正在跟进本教程作为我正在 Swift 中开发的 RSS feeder 应用程序的快速启动。我知道自本教程以来 Swift 中发生了一些变化,但它们似乎都没有解释为什么我遇到这个问题。
我的 TableViewController 中的相关代码(据我所知)如下:
override func viewDidLoad() {
super.viewDidLoad()
let url:NSURL = NSURL(string: "my.url.string")
parser = NSXMLParser(contentsOfURL: url)
parser.delegate = self
parser.parse() // <- Thread 1: EXC_BAD_ACCESS (code=1, address=0x0)
}
实际的解析器委托方法似乎没有问题,因为我在它们上设置了断点,并且在崩溃之前甚至没有调用它们。
我的假设是这是一个 Swift 错误,但我想在向苹果投诉之前确保我没有遗漏任何东西。
自动翻译的标头中似乎存在一个错误,它假定始终使用限定名称空间,但是,由于它们有时可能为零,因此会崩溃。
如果您使用:
func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String!, qualifiedName qName: String!, attributes attributeDict: [NSObject : AnyObject]!)
通过使命名空间和qualifiedName参数隐式解包(或者显式包装也应该有效),你应该可以开始了。
您可能必须对您提供的任何采用namespaceURI 或qualifiedName 参数的委托方法进行类似的更改。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)