RSSの再配信を受け取るiPhoneアプリを作る(1)

今回は溜めたRSSを再配信し、受け取るアプリケーションを作成します。
RSS3

■完成予定イメージ

完成予定イメージ(画像の数値はダミーです)
ios_app

■サーバ側の作成

DBから記事を取得してjsonで返却するプログラムです。
ドキュメントルート(デフォルトでは/var/www/html/)に置いてください。
SQLはツイート数の多い順に抽出していますが、リクエストパラメータに応じて並び順や抽出日時のパターンを変えることができるようにしておくと便利です。

 

■クライアント側の作成

クライアントはiPhoneアプリにします。
統合開発環境はXCodeです。2014年5月時点で最新の5.1.1を使用します。

■プロジェクト作成
XCodeを起動し、Fileメニューから「New」→「Project」で「Tabbed Application」を選択します。プロジェクト名は適当に付けてください。
プロジェクトが作成されるので、画面左のツリー(Project Navigator)から「Main.storyboard」を選択すると、ViewControllerが「FirstViewController」 と「SecondViewController」の2つがある状態になっていると思います。
今回は「FirstViewController」を使用してtwitterでのツイート順に記事を表示してみます。
storyboard

まず、不要なラベルを削除します。
storyboard1

画面右下のオブジェクトライブラリから、TableViewを選択し、FirstViewControllerにドラッグ&ドロップします。
storyboard2

同様にTableViewCellをTableViewにドラッグ&ドロップします。
storyboard3
TableViewCellに、タイトルやツイート数などを表示するラベルをはります。
storyboard4
■セル用のクラスの作成
Fileメニューから「New」→「File」で「Cocoa Touch」の「Objective-C class」を選択します。
クラス名の入力画面が表示されるので、クラス名はArticleTableViewCellとし、親クラスにはUITableViewCellを入力します。

■ArticleTableViewCellのひも付け

Main.storyboardでTableViewCellを選択し、画面右上「Attributes Inspector」のIdentifierに「Article」を入力します。(下図)
※ウィンドウが表示されていない場合は「View」メニューの「Utilities」→「Show Attributes Inspector」で表示されます
storyboard5
同様に、画面右上の「Identity Inspector」でCustom Classに「ArticleTableViewCell」を選択します。
※ウィンドウが表示されていない場合は「View」メニューの「Utilities」→「Show Identity Inspector」で表示されます
これでStoryboard上のTableViewCellと、ArticleTableViewCellが紐付けることができました。

■Delegateに指定

TableViewCを選択し、画面右上の「Connections Inspector」でdataSourceとdelegateにFirstViewControllerを指定します。(下図)
storyboard6
ざっくり言うと、delegate = TableViewのイベントを制御するクラス、dataSource = TableViewのデータを制御するクラス となります。
(詳細はAppleの開発者サイトで確認してください。)

■ArticleTableViewCellの実装

ArticleTableViewCell.h

ここでは
・ラベルに文字列を設定するメソッドの定義
・ラベルの定義
をしています。

ArticleTableViewCell.m

ラベルに文字列を設定するメソッドの実装をしています。

■FirstViewControllerの実装

FirstViewController.h

_objectsにTableViewに記事情報を保持するようにします。

FirstViewController.m

viewDidLoad
・サーバから記事情報を取得し、_objectsに保持します。
cellForRowAtIndexPath
・IndexPathで指定された位置のセルを作成し、返却します。
numberOfRowsInSection
・セルの数を返却します。

■Main.storyboardとラベルのひも付け

FirstViewController.hに定義しているUILabelとStoryboardのラベルを紐付けます。
storyboard7

■動作確認

エミュレータで実行すると、記事を上手く表示することができました。
result1
基本的な部分はできたので、次回はアプリを完成させます。