NSXMLParser contentsOfURL与数据

时间:2016-11-18 08:55:25

标签: swift nsxmlparser

从服务器解析XML文件时,我一直使用" init(data: Data)"

 let url = URL(string: urlString)
 let data = NSData(contentsOf: url!)
 let parser = XMLParser(data: data as! Data)

我阅读了文档并看到了这种方法" init?(contentsOf: URL)"

let url = URL(string: urlString)
let parser = XMLParser(contentsOf: url!)

问题是我是否不必要地从URL内容转换为数据对象,我也可以从URL初始化?或者,创建数据对象并从中进行解析是否有任何优点?

1 个答案:

答案 0 :(得分:2)

两种变体之间没有语义差异。

对于 http(s)网址,您应该更喜欢init(data:)XMLParser(data:),但不应使用NSData(contentsOf:)加载数据。原因是contentsOf:变体将使用同步请求阻止当前线程。您应该使用NSURLSession异步加载数据。

您应该仅对{strong>文件网址使用XMLParser(contentsOf:)Data(contentsOf:)