在 swift 中解析 XML 失败并出现 nil 错误
Posted
技术标签:
【中文标题】在 swift 中解析 XML 失败并出现 nil 错误【英文标题】:Parsing XML in swift fails with nil error 【发布时间】:2018-12-30 16:13:41 【问题描述】:我正在尝试使用 Swift 解析 xml 文件。我创建了一个 XMLParserDelegate 类,OSM
,它实现了以下功能:
func parserDidStartDocument(_ parser: XMLParser)
func parserDidEndDocument(_ parser: XMLParser)
func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:])
func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?)
我使用委托如下:
let url = URL(string: "file:///Users/<Username>/Documents/Maps/OSMFiles/simple.osm")!
print(url.absoluteString)
let parser = XMLParser(contentsOf: url)!
let osm = OSM()
parser.delegate = osm
print(parser.parse())
print(parser.parserError)
代码打印如下:
file:///Users/<Username>/Documents/Maps/OSMFiles/simple.osm
false
nil
【问题讨论】:
但是nil
表示没有错误?你是在调试器中运行的吗?
@JoakimDanielson 看起来是这样,但解析器返回 false,因此它以某种方式失败。我在调试器中运行,没有异常。
您可以在委托协议中实现一些错误处理方法(我认为您需要),这样您就可以了解哪里出了问题。请注意,在“...操作异常终止...”之后 parseError 有一个值,这可能是一个较软的错误,例如某种验证错误。
@JoakimDanielson 谢谢你,我已经实现了parseErrorOccurred
和validationErrorOccurred
函数,但都没有被调用,还有其他函数可以提供更多信息吗?
【参考方案1】:
事实证明,应用沙盒是问题所在,可能是因为我试图访问沙盒外的文件。关闭沙盒可以解决问题。
【讨论】:
以上是关于在 swift 中解析 XML 失败并出现 nil 错误的主要内容,如果未能解决你的问题,请参考以下文章
Swift:在运行时在非可选中检测到意外的 nil 值:强制转换为可选失败