Перестал работать XML парсер
Здравcтвуйте, после перехода на Xcode 6.3 перестал работать xml парсер. А именно не вызываются методы делегата. Буду признателен за помощь.
Вот мой код:
Данные которые нужно распарсить:
var strData:String = "<?xml version='1.0' encoding='UTF-8'?><note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>"
let parser = XMLParser(xml: strData , element:"body") //Xml и что искать
parser.parse()
var value = parser.returnValue! //Значение содержащиеся в теге <body>, сейчас возвращается nil
Вот сам класс который занимается парсингом:
import Foundation
private class ParserDelegate:NSObject, NSXMLParserDelegate{
var text=""
var element:String
var recordingElementValue:Bool=false
init(element:String){
self.element=element
super.init()
}
//Эти методы не вызываются вообще
func parser(parser: NSXMLParser!, didStartElement elementName: String!, namespaceURI: String!, qualifiedName qName: String!, attributes attributeDict: [NSObject : AnyObject]) {
println("element start: \(elementName)")
if elementName==element{
recordingElementValue=true
}
}
func parser(parser: NSXMLParser!, didEndElement elementName: String!, namespaceURI: String!, qualifiedName qName: String!) {
println("element finish: \(elementName)")
if elementName==element{
recordingElementValue=false
}
}
func parser(parser: NSXMLParser!, foundCharacters string: String!) {
if recordingElementValue{
text+=string
println("Text\(text)")
}
}
}
class XMLParser{
private var xmlString:String
var returnValue:String!
private var parserDelegate:ParserDelegate
init(xml:String, element:String){
self.xmlString = xml
self.parserDelegate = ParserDelegate(element:element)
}
func parse()->Bool{
let p = NSXMLParser(data: xmlString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!)
p.delegate = parserDelegate
if p.parse(){
returnValue = parserDelegate.text
println(p.parserError)
return true
}
return false
}
}
Источник: Stack Overflow на русском