当我在选择了 iOS 模拟器的 Xcode 中运行以下代码时,它的解析没有问题,但是当我在设备 (iPhone 5c) 上运行它时,我得到: 加载 xml 失败 XML 解析在 0:0 失败:可选(“操作无法完成。(Cocoa 错误 -1。)”)
我尝试了不同的 xml 文件,但看起来这是一个安全问题!? 我应该在我的项目中的某个地方设置权限吗?
let url:String="http://images.apple.com/main/rss/hotnews/hotnews.rss#sthash.TyhRD7Zy.dpuf"
let urlToSend: NSURL = NSURL(string: url)!
parser = NSXMLParser(contentsOfURL: urlToSend)!
parser.delegate = self
if !parser.parse() {
let error = parser.parserError
let line = parser.lineNumber
let col = parser.columnNumber
print("XML parsing failed at \(line):\(col): \(error?.localizedDescription)")
}`
最佳答案
为了帮助隔离错误,首先将 URL 的内容加载到字符串中可能会有所帮助 - 这将帮助您隔离它是安全问题还是解析问题。您可能还希望取消强制展开并使用 if/let,以便可以更清楚地看到错误流。
话虽如此,这里有一些需要检查的事情:
1) 设备是否在线?
2) 设备是否连接到代理、VPN 或其他阻止某些资源的中介?
3) 当您使用 Safari 时,设备是否能够访问该 URL?
4) 您的解析器能够读取其他 RSS 提要吗?
根据我的经验,2) 通常是问题所在。
关于ios - swift 2 中的 XML 解析器在设备上返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34250341/