NSXML解析器和异常/错误处理Swift 2.0

时间:2015-08-08 00:44:17

标签: ios xcode swift

所以,让我尽可能简单明了地解释一下...... 我试图使用swift从我的常规方法解析网址中的xml文件:

if let parser = NSXMLParser(contentsOfURL: xml) {
        parser.delegate = self

        let success:Bool = parser.parse()

        if success {
            print("parse success")

        } else {
            print("parse failure!")
        }
    }   

它有效,但是当遇到特殊字符(例如重音符号)时,一切都变得一团糟,所以我在这里发现,如果不是直接解析网址,而是使用NSData进行不会发生的编码。
正如我第一次尝试swift 2.0和使用catch和try进行错误处理一样,对此并不了解。这是我的代码:

do{
        let dataString = try String(contentsOfURL: XML, encoding: NSUTF8StringEncoding)
        let data:NSData = dataString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!

        if let parser = NSXMLParser(data: data) as NSXMLParser! {
            parser.delegate = self

            let success:Bool = parser.parse()

            if success {
                print("parse success")

            } else {
                print("parse failure!")
            }
        }

    }catch {
        print("catch failure!")
    }

但是这总是会返回&#34;捕获失败!&#34;,网址是正常的并且正常工作,其他方法正常工作(除了特殊字符)我真的不知所措。< / p>

非常感谢你!

1 个答案:

答案 0 :(得分:0)

在得到另一个答案Here后,我能够解决问题。

而不是使用:

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="*"/> <!-- for the text -->
    <ColumnDefinition Width="Auto"/> <!-- for the delete button -->
</Grid.ColumnDefinitions>

我用过:

func parser(parser: NSXMLParser, foundCharacters string: String) {
    if (currentElement != ""){
            currentString = string

    }

}

一切都按原样运作!