NSXMLParser错误的访问错误 - swift OS X.

时间:2015-11-01 07:21:51

标签: swift macos nsxmlparser

我正在使用NSXMLParser解析桌面上的xml文件。调用parse方法时,NSXMLParser对象会给出错误的访问错误。

这是代码

        let xmlURl = NSHomeDirectory()+"/Desktop/questions.xml"
        let myUrl = NSURL(fileURLWithPath:xmlURl)
        let  myparser =  NSXMLParser(contentsOfURL: myUrl)
        myparser?.delegate = MyXMLDelegate()
        myparser?.parse() // HERE the EXC bad access code 1 

这是xml文件的内容

<?xml version="1.0" encoding="UTF-8"?>
<addresses owner=”swilson”>
<person>
    <lastName>Doe</lastName>
    <firstName>John</firstName>
    <phone location="mobile">(201) 345-6789</phone>
    <email>jdoe@foo.com</email>
    <address>
        <street>100 Main Street</street>
        <city>Somewhere</city>
        <state>New Jersey</state>
        <zip>07670</zip>
    </address>
</person>

上述代码有什么问题?

提前谢谢你。

1 个答案:

答案 0 :(得分:1)

这是我遇到的一个令人烦恼,不明显的错误。问题是这一行:

myparser?.delegate = MyXMLDelegate()

委托属性定义为非拥有。所以Swift基本上就是在这一行之后释放你的委托,导致访问不良。

要修复保留对您的代理人的引用

let delegate = MyXMLDelegate()
myparser?.delegate = delegate