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など色々あります。

便利ですね。