2017-05-24 19 views
0

SWXMLHASHまたはAEXMLライブラリを使用して、私のブログのRSSであるURLからXMLを解析したいと思います。私はこれのための解決策を見つけましたが、私は解決策を試みたときに私のアプリがクラッシュしました。 それは、発生した問題です:fatal error: unexpectedly found nil while unwrapping an Optional value (lldb)AlamofireとAEXMLまたはSWXMLHASHを組み合わせるにはどうすればいいですか

とのviewDidLoadである私のコードがあります。

` 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!) 
     } 
     } 
` 

は、このために、他の解決策はありますか?私はNSXMLParserを使いたくない、これらの種類のライブラリを使用したい、または最新のライブラリがあれば使用できる。

ありがとうございました!

+0

を試してみてください。.. AEXMLを使用。 'news'はnilでなければならないので、あなたのXMLはそのパスに何も持ってはいけません。 –

+0

[link](http://imgur.com/a/O1GwC)XMLの主な構造があります。私は考え始めました。私は間違いをするかもしれません。あなたのコメントをありがとうございます。Tristan – Oliver

答えて

0

使用

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

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

私はそれが `プリント(ニュース!)`でクラッシュしていると仮定し、この

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

残念ながら、タイプAEXMLDocumentの値にはメンバNSXMLParserOptions()がありません...そして、AEXMLOptions.ParserSettings、AEXMLDocument()など多くの可能性を試しました。それは常に動作しませんでした。私はXMLParserオプションの使い方が変わったと思います。そして、本当にありがとう! – Oliver

+0

申し訳ありません。古いバージョンのAEXMLを使用していました。私は最新バージョンに変更しました。 – Daniel

+0

そして 'responseJSON'を' response'に変更しなければならないと思います。 JSONではなくxmlを解析しています。 – Daniel

関連する問題