I osアプリのmvcモデル

2,914 views

Published on

  • Be the first to comment

  • Be the first to like this

I osアプリのmvcモデル

  1. 1. iOSアプリのMVCモデル 13年7月3日水曜日
  2. 2. MVCとは • Model - Viewを構成する情報を保持する • View - Modelのデータを表示する - ユーザから操作を受ける • Controller - Modelに情報の更新を命令する - ViewにModelの情報を送り、Viewを通じて ユーザからの操作を受ける ✦プログラムを以下三つのカテゴリに分けてクラ ス設計するデザインパターン 13年7月3日水曜日
  3. 3. iOSアプリ上のMVC図 テキストテキスト④ 1. ユーザの操作をViewからControllerが受け取る 2. ControllerがModelに渡す 3. Modelで処理を行って結果をControllerに返す 4. Controllerが処理結果をViewに表示 ① ② ③ 13年7月3日水曜日
  4. 4. どんなメリットがある? 13年7月3日水曜日
  5. 5. メリット • 表示ロジック(View)と計算やデータ取得処 理(Model)を分離させる事で、各ロジックの 再利用性が高まる。 • クラスを処理系統で分割する事でソースの可 読性が高まる(見やすい) • etc... 13年7月3日水曜日
  6. 6. 入門書にありがちな パターン 13年7月3日水曜日
  7. 7. すべての処理が ViewControllerに書か れている ※ 画面ごとに全く異なるデータを扱うなら ありですが、業務ではちょっと・・・ 13年7月3日水曜日
  8. 8. では具体的にどう書くか 13年7月3日水曜日
  9. 9. Model例 JSONやXMLなどの構造化されたデータを 扱う場合、Controllerがデータを扱い易い ように設計する。 - 情報取得のインターフェースの作成 - Entityクラスの作成 13年7月3日水曜日
  10. 10. 情報取得のインターフェースの作成 • Controllerからの処理命令を簡単にする ため、インタフェースとしての情報更 新メソッド、情報返却メソッドを作成 する。 • ローカルの情報へアクセスする処理 や、HTTPクライアントでリモートから 情報を取得するような実装 13年7月3日水曜日
  11. 11. Entityクラスによる情報管理 • こんなJSONがあった場合 [ { "id" : "1FZ3P4ACUWBBC-2010061010321", "created_at" : "Thu Jun 10 01:32:13 +0000 2010", "text" : "つぶやきの本文", "user" : { "id" : "1FZ3P4ACUWBB", "screen_name" : "Becky", "profile_image_url" : "http://profile.img.xxxxxx.jpg", "url" : "http://ssteaete/show_friend.pl?uid=1FZ3P4ACUWBB" }, "reply_count" : "3", "favorite_count" : "5", "favorited" : true }, ・・・ ] 13年7月3日水曜日
  12. 12. ベタなNSArrayで管理せずに専用のDictionaryオブ ジェクトクラスを作る #import <Foundation/Foundation.h> @interface SAMUserEntity : NSObject @property (nonatomic, strong) NSString *profileImageURL; @property (nonatomic, strong) NSString *URL; @property (nonatomic, strong) NSString *userID; @property (nonatomic, strong) NSString *screenName; +(MixiUserEntity *)userEntitiWithDict:(NSDictionary *)dict; @end @interface SAMVoiceEntity : NSObject @property (nonatomic, strong) NSString *voiceID; @property (nonatomic, strong) NSString *createdAt; @property (nonatomic, strong) NSString *text; @property (nonatomic, assign) NSInteger replyCount; @property (nonatomic, assign) NSInteger favoriteCount; @property (nonatomic, assign) BOOL favorited; @property (nonatomic, strong) SAMUserEntity *userEntity; +(MixiVoiceEntity *)voiceEntitiWithDict:(NSDictionary *)dict; @end 13年7月3日水曜日
  13. 13. すいません力尽きま した。。。 13年7月3日水曜日

×