SwiftによるシンプルなRSSリーダーの作り方、を試してみた 1
上記の記事を見て作成していたが、 結構前の記事らしくエラーが出まくって1日では半分も終わらなかった。
引っかかった点
Swift3.0でPageMenuが大量のエラー
https://teratail.com/questions/58575
Google Feed APIがすでに終了
ググってみるとYQL APIがでてきたので、それを使ってみる。 が、情報なさすぎるので、適当に作って見た。
Yql.swift
import Alamofire class Yql { class func test_request() { Yql.request( url: "http://d.hatena.ne.jp/nitoyon/rss", query: "select title from rss", success: { (data: Dictionary) in print(data) }, fail: { (error: Error?) in print(error!) } ) } // https://qiita.com/tmf16/items/d2f13088dd089b6bb3e4 // https://qiita.com/mishimay/items/1232dbfe8208e77ed10e class func request( url: String, query: String, success: @escaping (_ data: Dictionary<String, Any>) -> Void, fail: @escaping (_ error: Error?) -> Void) { let host = "https://query.yahooapis.com/v1/public/yql" // let _url = url.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed)! let param: Parameters = [ "format": "json", "q": "\(query) where url='\(url)'" ] Alamofire.request(host, method: .get, parameters: param).responseJSON { response in if response.result.isSuccess { success(response.result.value as! Dictionary) } else { fail(response.result.error) } } } }
jsonの形式がちょっと変わってた。 ViewController.swift
override func viewDidLoad() { super.viewDidLoad() Yql.request( url: "http://menthas.com/javascript/rss", query: "select * from rss", success: { (str: Dictionary) -> Void in let json = JSON(str) let items = json["query"]["results"]["item"] if let _items = items.array { for item in _items { print(item["title"]) print(item["link"]) } } }, fail: { (error: Error?) -> Void in print(error!) } ) }