NSXMLParser contentsOfURL 与数据

NSXMLParser contentsOfURL Vs Data

从服务器解析 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 初始化?或者,创建数据对象并从中解析有什么好处吗?

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

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

异步加载数据

您应该只对 file url 使用 XMLParser(contentsOf:)Data(contentsOf:)