SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

iPhone+Ruby on Rails連携テクニック

iPhoneとRuby on Railsを超簡単に連携する ObjectiveResource
- iPhone編


iPhoneアプリの作成 2

コードの作成

Talkクラスの作成

  1. Xcodeの左カラムのClassesを右クリックし「追加」→「新規ファイル」をクリック。
  2. 新規ファイルのテンプレートを選択ウィンドウでObjective-C classを選択(Subcalss ofはNSObject)し次へボタンをクリック。
  3. 新規NSObject subclassウィンドウでファイル名に「Talk.m」を入力(同時に"Talk.h"も作成をチェック)。
  4. 完了ボタンをクリック。
  5. Talk.h、Talk.mファイルができる。
  6. 前ページで説明したTalk.h、Talk.mの内容をそれぞれのファイルに書き保存する。

HitoritterViewController.mの作成

 HitoritterViewController.mに、テーブルにデータを表示する処理、つぶやきボタンの処理、メモリー管理関連のコードを書きます。

#import "HitoritterViewController.h"

@implementation HitoritterViewController

#import "HitoritterViewController.h"
#import "Talk.h"

@implementation HitoritterViewController

@synthesize talkText;
@synthesize talksTable;
@synthesize talks;


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [talks count];
}

- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Talks";
    
    UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
    }
    
    NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease];
    [dateFormat setDateFormat:@"MM/dd hh:mm"];
    
    Talk *talk = [talks objectAtIndex:indexPath.row];
    cell.textLabel.text = [NSString stringWithFormat:@"%@ %@", 
                           [dateFormat stringFromDate:talk.createdAt],
                           talk.text];
    
    return cell;
}

- (IBAction)pushOnTalk:(id)sender {
    Talk *talk = [[[Talk alloc] init] autorelease];
    talk.createdAt = [NSDate date];
    talk.text = talkText.text;    

    [talks addObject:talk];
    talkText.text = @"";
    [talkText resignFirstResponder];    
    [talksTable reloadData];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    talks = [[NSMutableArray alloc] init];
}

- (void)viewDidUnload {
    self.talkText = nil;
    self.talksTable = nil;
    self.talks = nil;
}

- (void)didReceiveMemoryWarning {
   [super didReceiveMemoryWarning];
    
}

- (void)dealloc {
    [talks release];
    [super dealloc];
}
@end
  • tableView: numberOfRowsInSection:メソッドはテーブルに表示するデータの件数を戻します。
  • tableView: cellForRowAtIndexPath:メソッドはテーブルに表示する行の内容を戻します、表示する内容はUITableViewCellクラスのインスタンスで、ここではつぶやいた文字列と日時を連結した文字列を設定しています。またテーブルビューはOSと協調してスクロールの高速化のためにキャッシュを行っています。詳しくはiPhone SDKのドキュメントなどを参照ください。
  • pushOnTalk:はつぶやきボタンを押した際の処理で、以下を行っています。
    • Talkクラスのインスタンスを作成
    • インスタンスに現在の日時とつぶやきの文字列を代入
    • インスタンスをつぶやきを保持している配列に追加
    • つぶやきの入力フィールドをクリア
    • キーボードを消す
    • テーブルの再表示
  • その他のメソッドは主にメモリー管理などを行っています。詳しくはiPhone SDKのドキュメントなどを参照ください。

実行

 ここまでできたらメニューの「ビルド」→「ビルドと実行」を選択してください。コンパイルが行われエラーが無ければシュミレータ上でひとりったー ローカル版が実行できます。なお警告が出ている場合は、ほとんどがエラーですので無視せず原因を究明してください。

 ローカル版が動いたら、Ruby on Rails編に進んでください。

Ruby on Rails編はこちら

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
iPhone+Ruby on Rails連携テクニック連載記事一覧
この記事の著者

吉田裕美(ヨシダユウミ)

有限会社 EY-Office 取締役CADのベンチャー企業でCADのコア部分や図面管理システムなどの開発に従事した後、独立しJava,Ruby,PerlでWebアプリを中心に開発してきた。現在は殆どの開発はRuby on Rails。ここ数年はソフトウェアエンジニアの教育に興味をもち、従来の知識偏重な教育ではなく現実の問題を解決できるエンジニアを育てる教育に注力している。またLisp等に関心...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5126 2010/04/22 15:50

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー