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:)
。
从服务器解析 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:)
。