NSXMLParser:如果.parse()返回false如何返回parseError



在Swift中,我一直在尝试使用NSXMLParser。总的来说,我对概念和实现很有信心。

因此,例如,我有一个函数myFunc(),它将包括对.parse()方法的调用。

如果.parse()方法返回false,我如何使用委托函数parser(parser: NSXMLParser, parseErrorOccurred parseError: NSError)parseError直接返回给myFunc() ?我如何访问错误?

我知道我可以打印错误。我可以把它的值赋给一个具有类级作用域的变量。但我猜有更好的方法得到它。

func myFunc() {
    // ...
    myXmlParser!.delegate = self
    if myXmlParser!.parse() != true {
       // ...
    }
}

我实现委托函数

func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) {
    // ...
}
func parser(parser: NSXMLParser, foundCharacters string: String) {
    // ...
}
func parser(parser: NSXMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {
    // ...
}
func parser(parser: NSXMLParser, parseErrorOccurred parseError: NSError) {
    // I know that I could print(parseError) or assign its value to a variable wth class level scope
}

我怎么能返回parseError或以其他方式从myFunc()访问它,而不将其值传递给一个范围更广的变量?

如果NSXMLParserparse()方法返回false,则可以使用它的

var parserError: NSError? { get } // can be called after a parse is over to determine parser state.

属性获取有关问题的信息。

var lineNumber: Int { get }
var columnNumber: Int { get }

属性提供有关错误位置的更多信息。例子:

if !myXmlParser.parse() {
    let error = myXmlParser.parserError
    let line = myXmlParser.lineNumber
    let col = myXmlParser.columnNumber
    println("XML parsing failed at (line):(col): (error?.localizedDescription)")
}

最新更新