从服务器解析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初始化?或者,创建数据对象并从中进行解析是否有任何优点?
答案 0 :(得分:2)
两种变体之间没有语义差异。
对于 http(s)网址,您应该更喜欢init(data:)
或XMLParser(data:)
,但不应使用NSData(contentsOf:)
加载数据。原因是contentsOf:
变体将使用同步请求阻止当前线程。您应该使用NSURLSession
异步加载数据。
您应该仅对{strong>文件网址使用XMLParser(contentsOf:)
和Data(contentsOf:)
。