ShivKatall
ShivKatall

Reputation: 83

parser.parse() in Swift leads to EXC_BAD_ACCESS

I'm following this tutorial as a jump start for an RSS feeder app I'm working on in Swift. I know there are some things that have changed in Swift since this tutorial, but none of them seem to explain why I'm having this issue.

Relevant Code (as far as I can tell) is as follows in my 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)

}

There doesn't seem to be a problem with the actual parser delegate methods as I put breakpoints on them and they aren't even being called before the crash.

My assumption is that it's a Swift bug, but I wanted to make sure I wasn't missing something before I go complaining to apple about it.

Upvotes: 8

Views: 2134

Answers (3)

djdance
djdance

Reputation: 3209

if you face with EXC_BAD_ACCESS now in 2021, check if you call parser in main UI thread. Don't parse in network callback. THis was my case.

Upvotes: 0

tadija
tadija

Reputation: 3271

This bug is fixed in XCode Version 6.1 (6A1052c), in the same way @David has already suggested, but just for the record, it's fixed now.

Upvotes: 0

David Berry
David Berry

Reputation: 41226

There seems to be an error in the automatically translated headers that assumes that qualified name spaces are always used, however, since they can be nil sometimes, it crashes.

If you use:

func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String!, qualifiedName qName: String!, attributes attributeDict: [NSObject : AnyObject]!)

by making the namespace and qualifiedName parameters implicitly unwrapped (or explicitly wrapped should work as well) you should be good to go.

You'll probably have to make similar changes for any delegate methods you provide that take namespaceURI or qualifiedName parameters.

Upvotes: 13

Related Questions