我正在使用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>
上述代码有什么问题?
提前谢谢你。
答案 0 :(得分:1)
这是我遇到的一个令人烦恼,不明显的错误。问题是这一行:
myparser?.delegate = MyXMLDelegate()
委托属性定义为非拥有。所以Swift基本上就是在这一行之后释放你的委托,导致访问不良。
要修复保留对您的代理人的引用
let delegate = MyXMLDelegate()
myparser?.delegate = delegate