MWFeedParser を Swift で使ってみる
MWFeedParser は RSS 1.x, 2.x と Atom に対応した parser ライブラリです。 NSXMLParser を利用すると大変なXMLのparseですが、このライブラリなら簡単に解析することができます。
mwaterfall/MWFeedParser · GitHub
興味があって Swift から使ってみました。 基本の基本部分のみの実装ですが https://github.com/・・・/swift_study/tree/master/RssReader_1
その時の手順メモです。
1 . podfile にMWFeedParser を記載(以下) & pod install で MWFeedParser をインストール
pod 'MWFeedParser'
2 . Xcodeを起動し、xxx-Bridging-Header.h(Swift から Objective-Cのクラスやライブラリを使うために必要なファイル)を用意、以下を追記。
#import <MWFeedParser.h>
3 . MWFeedParser を利用する。
ViewControllerにMWFeedParserDelegateをセットします。
その後は、MWFeedParserを使うだけです。一々通信の処理を書かなくても、これだけで対象のURLからXMLを取得しparseを開始してくれます。
let feedURL = NSURL.URLWithString("http://rss.dailynews.yahoo.co.jp/fc/entertainment/rss.xml"); let feedParser = MWFeedParser(feedURL: feedURL) feedParser.delegate = self feedParser.parse()
4 . MWFeedParserのdelegateメソッドの実装
parseのタイミングによっていくつかのメソッドが呼ばれるので、それぞれに必要な処理を書きます。 この例では、parse開始時にNSMutableArrayを初期化し、FeedのItemを詰めていきます。parse完了時には tableViewのreloadを実行しています(これでtableViewをfeedItemsの内容に更新)。
// parser 開始 func feedParserDidStart(parser: MWFeedParser) { self.feedItems = NSMutableArray() } // parser 完了時 func feedParserDidFinish(parser: MWFeedParser) { self.tableView.reloadData() } // Feed Info の parse 完了 func feedParser(parser: MWFeedParser, didParseFeedInfo info: MWFeedInfo) { } // Feed Item の parse 完了(1件毎) func feedParser(parser: MWFeedParser, didParseFeedItem item: MWFeedItem) { self.feedItems.addObject(item) }
なお、item:MWFeedItem で取得出来る情報は冒頭のURL先にも書かれていますが、titleやlink,Dateなど色々あります。
便利ですね。