2017-05-24 4 views
0

Ich möchte eine XML von URL, die RSS meines Blogs mit SWXMLHASH oder AEXML-Bibliotheken ist, analysieren. Ich habe eine Lösung dafür gefunden, aber als ich die Lösung ausprobiert habe, ist meine App abgestürzt. Es ist das auftretende Problem: fatal error: unexpectedly found nil while unwrapping an Optional value (lldb)Wie kann ich Alamofire mit AEXML oder SWXMLHASH kombinieren

Und es gibt meine Codes, die in viewDidLoad sind:

` Alamofire.request("http://myblog.com/feed").responseJSON { response in 

     if let data = response.data { 

     let xml = SWXMLHash.parse(data) 
      let news = xml["rss"]["channel"]["item"][0]["title"].element?.text 
      print(news!) 
     } 
     } 
` 

Gibt es eine andere Lösung? Ich möchte nicht NSXMLParser verwenden, ich möchte diese Art von Bibliotheken verwenden oder Wenn es eine aktuelle Bibliothek gibt, kann ich verwenden.

Vielen Dank für Ihre Hilfe!

+0

Ich nehme an, es an der 'Druck abstürzt (Nachrichten!)'. 'news' müssen null sein, also darf Ihr XML auf diesem Pfad nichts haben. –

+0

[link] (http://imgur.com/a/O1GwC) Es gibt die Hauptstruktur meines XML. Ich habe angefangen zu denken, kann ich einen Fehler machen .. Vielen Dank für Ihren Kommentar Tristan – Oliver

Antwort

0

Verwenden

Alamofire.request("http://myblog.com/feed").response

nicht Alamofire.request("http://myblog.com/feed").responseJSON

I AEXML verwendet .. versuchen, diese

Alamofire.request("http://myblog.com/feed").response { res in 

     guard let xml = res.data else { 
      return 
     } 

     var options = AEXMLOptions() 
     options.parserSettings.shouldProcessNamespaces = false 
     options.parserSettings.shouldReportNamespacePrefixes = false 
     options.parserSettings.shouldResolveExternalEntities = false 

     do { 
      let xmlDoc = try AEXMLDocument(xml: xml, options: options) 

      print(xmlDoc.root["channel"]["item"]["title"].value!) 

     } catch let error { 
      print(error) 
     } 
} 
+0

Leider hat Wert des Typs AEXMLDocument kein Mitglied NSXMLParserOptions() ... Und ich habe zahlreiche Chancen wie AEXMLOptions.ParserSettings, AEXMLDocument(). Optionen versucht usw. Es hat immer nicht funktioniert. Ich denke, die Verwendung von XMLParser-Optionen hat sich geändert. Und ich danke dir wirklich für deine Hilfe! – Oliver

+0

Es tut mir leid .. Ich habe eine ältere Version von AEXML verwendet. Ich habe es auf die neueste Version geändert. – Daniel

+0

Und ich denke, du musst "responseJSON" zu "response" ändern. Sie analysieren XML. Nicht JSON. – Daniel

Verwandte Themen