狠狠撸

狠狠撸Share a Scribd company logo
2014年7月25日
TeshGym
akuraru
1 自己紹介
? Name: akuraru
? Website: いつもあさって!!
2 今日話すこと
? ViewはModelの写像であるということをはな
します
– MVCの概要
– 独自のデザインパターン
? 対象
– CoreDataを使っている
3 MVC
? 機能ごとの分離を明確にすることでそれぞれを
独立性を確保できる。
? それぞれのライブラリを使って実装する
? 再利用性を上げる
4 MVC
5 画面の描画
6 画面の描画
7 画面の描画
- (void)updateView {
self.model = [Model MR_findFirst];
self.subView = [self createSubView];
[self.subView setModel:self.model];
[self.view addSubView:self.subView];
}
1. コントローラはモデルを読み込む
2. Viewを生成する
3. ViewにModelを反映させる
8 画面の描画
- (void)updateView {
self.model = [Model MR_findFirst];
[self.subView setModel:self.model];
}
1. コントローラはモデルを読み込む
2. Viewを生成する
3. ViewにModelを反映させる
9 TableViewの描画
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
Model *model = [self modelForIndexPath:indexPath];
id cell = [tableView dequeueReusableCellWithIdentifier:
[self identifierForEntity:model]];
[cell setModel:model];
return cell;
}
1. コントローラはモデルを読み込む
2. Viewを生成する
3. ViewにModelを反映させる
10 ここまでのまとめ
? ViewはModelの写像
11 Modelの変更
? Viewの変更すればModelに反映させる
? 惭补苍补驳别诲翱产箩别肠迟の扱いに注意が必要
12 Modelの変更
? コンテキストがひとつの場合、Modelを変更し
た場合戻すのが大変。
? 戻さずに別のコンテキストを保存すると変更が
保存されてしまう。
? コンテキストを複数扱えるほど頭良くない
13 Modelの変更
? Wrapper Objectというパターン
– 編集画面でのViewの変更を即座に反映する
Modelに反映する
– 戻す手間を減らすため
※ Wrapper Objectは造語であって一般的な言葉
ではない
14 Wrapper Object
? ManagedObjectと同じプロパティを持つ。
? コンテキストを増やさずに、変更可能な
ManagedObjectとして振る舞う
? ManagedObjectを格納している
? 実際に保存する段階になってManagedObject
に反映させる
15 日記の例え
? 例えば日記アプリでタイトル、本文が保存でき
るとする。
@interface Diary : NSManagedObject
@property (nonatomic, strong) NSString *title;
@property (nonatomic, strong) NSString *content;
@end
16 日記のラッパー
@interface DiaryWrapper
@property (nonatomic, strong) NSString *title;
@property (nonatomic, strong) NSString *content;
@property (readonly, nonatomic, strong) Diary *entity;
// Diary又はnilを受け取って、wrapperを初期化する
- (instancetype)initWithDiary:(Diary *)entity;
// 渡されたDiaryに対してラッパーの状態を反映させる
- (void)updateDiary:(Diary *)entity;
@end
17 なぜ使うのか
? 一つのコンテキストを扱う
? 変更しやすいManagedObjectのように振る
舞う。
? Wrapperに対して変更を加えても
ManagedObjectには影響しない
? 変更を反映したくなければWrapperを捨てれ
ばいい
18 まとめ
? Wrapper Objectを紹介しました
? 変更しやすいManagedObject
19 コード
https://github.com/akuraru/TechGym

More Related Content

What's hot (19)

Angular#Kanazawa
Angular#KanazawaAngular#Kanazawa
Angular#Kanazawa
Kenichi Kanai
?
Eggplant Functional - Lesson 6 (Japanese slides)
Eggplant Functional - Lesson 6 (Japanese slides)Eggplant Functional - Lesson 6 (Japanese slides)
Eggplant Functional - Lesson 6 (Japanese slides)
Eggplant
?
闯蝉のビルド环境
闯蝉のビルド环境闯蝉のビルド环境
闯蝉のビルド环境
fourside
?
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Akira Inoue
?
React.js + Flux
React.js + FluxReact.js + Flux
React.js + Flux
dsuke Takaoka
?
意识低く惭别迟别辞谤绍介
意识低く惭别迟别辞谤绍介意识低く惭别迟别辞谤绍介
意识低く惭别迟别辞谤绍介
hashedrock
?
React を導入した フロントエンド開発
React を導入したフロントエンド開発React を導入したフロントエンド開発
React を導入した フロントエンド開発
daisuke-a-matsui
?
惭痴颁もやもや话
惭痴颁もやもや话惭痴颁もやもや话
惭痴颁もやもや话
Tetsuya Kaneuchi
?
エンタープライズ分野での実践础苍驳耻濒补谤闯厂
エンタープライズ分野での実践础苍驳耻濒补谤闯厂エンタープライズ分野での実践础苍驳耻濒补谤闯厂
エンタープライズ分野での実践础苍驳耻濒补谤闯厂
Ayumi Goto
?
Alt01-LT
Alt01-LTAlt01-LT
Alt01-LT
Yuta Hiroto
?
颈翱厂で惭痴痴惭入门
颈翱厂で惭痴痴惭入门颈翱厂で惭痴痴惭入门
颈翱厂で惭痴痴惭入门
ishikawa akira
?
闯补惫补厂肠谤颈辫迟と共に歩いて行く决意をした君へ
闯补惫补厂肠谤颈辫迟と共に歩いて行く决意をした君へ闯补惫补厂肠谤颈辫迟と共に歩いて行く决意をした君へ
闯补惫补厂肠谤颈辫迟と共に歩いて行く决意をした君へ
Muyuu Fujita
?
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.js
TanUkkii
?
T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門
normalian
?
础苍驳耻濒补谤闯厂+罢测辫别厂肠谤颈辫迟を试してみた。
础苍驳耻濒补谤闯厂+罢测辫别厂肠谤颈辫迟を试してみた。础苍驳耻濒补谤闯厂+罢测辫别厂肠谤颈辫迟を试してみた。
础苍驳耻濒补谤闯厂+罢测辫别厂肠谤颈辫迟を试してみた。
Toshio Ehara
?
a-blog cms の基本 Ver.Kochi
a-blog cms の基本 Ver.Kochia-blog cms の基本 Ver.Kochi
a-blog cms の基本 Ver.Kochi
Kasumi Morita
?
Flux react現状確認会
Flux react現状確認会Flux react現状確認会
Flux react現状確認会
VOYAGE GROUP
?
Eggplant Functional - Lesson 6 (Japanese slides)
Eggplant Functional - Lesson 6 (Japanese slides)Eggplant Functional - Lesson 6 (Japanese slides)
Eggplant Functional - Lesson 6 (Japanese slides)
Eggplant
?
闯蝉のビルド环境
闯蝉のビルド环境闯蝉のビルド环境
闯蝉のビルド环境
fourside
?
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Akira Inoue
?
意识低く惭别迟别辞谤绍介
意识低く惭别迟别辞谤绍介意识低く惭别迟别辞谤绍介
意识低く惭别迟别辞谤绍介
hashedrock
?
React を導入した フロントエンド開発
React を導入したフロントエンド開発React を導入したフロントエンド開発
React を導入した フロントエンド開発
daisuke-a-matsui
?
エンタープライズ分野での実践础苍驳耻濒补谤闯厂
エンタープライズ分野での実践础苍驳耻濒补谤闯厂エンタープライズ分野での実践础苍驳耻濒补谤闯厂
エンタープライズ分野での実践础苍驳耻濒补谤闯厂
Ayumi Goto
?
颈翱厂で惭痴痴惭入门
颈翱厂で惭痴痴惭入门颈翱厂で惭痴痴惭入门
颈翱厂で惭痴痴惭入门
ishikawa akira
?
闯补惫补厂肠谤颈辫迟と共に歩いて行く决意をした君へ
闯补惫补厂肠谤颈辫迟と共に歩いて行く决意をした君へ闯补惫补厂肠谤颈辫迟と共に歩いて行く决意をした君へ
闯补惫补厂肠谤颈辫迟と共に歩いて行く决意をした君へ
Muyuu Fujita
?
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.js
TanUkkii
?
T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門
normalian
?
础苍驳耻濒补谤闯厂+罢测辫别厂肠谤颈辫迟を试してみた。
础苍驳耻濒补谤闯厂+罢测辫别厂肠谤颈辫迟を试してみた。础苍驳耻濒补谤闯厂+罢测辫别厂肠谤颈辫迟を试してみた。
础苍驳耻濒补谤闯厂+罢测辫别厂肠谤颈辫迟を试してみた。
Toshio Ehara
?
a-blog cms の基本 Ver.Kochi
a-blog cms の基本 Ver.Kochia-blog cms の基本 Ver.Kochi
a-blog cms の基本 Ver.Kochi
Kasumi Morita
?
Flux react現状確認会
Flux react現状確認会Flux react現状確認会
Flux react現状確認会
VOYAGE GROUP
?

Viewers also liked (6)

Roditelskoe sobranie 12.05.2011
Roditelskoe sobranie 12.05.2011Roditelskoe sobranie 12.05.2011
Roditelskoe sobranie 12.05.2011
Gennadi6102
?
Roditelskoe sobranie 12.05.2011
Roditelskoe sobranie 12.05.2011Roditelskoe sobranie 12.05.2011
Roditelskoe sobranie 12.05.2011
Gennadi6102
?
Instructional rating course uspa
Instructional rating course uspaInstructional rating course uspa
Instructional rating course uspa
Nancy Tovar
?
Roditelskoe sobranie 12.05.2011
Roditelskoe sobranie 12.05.2011Roditelskoe sobranie 12.05.2011
Roditelskoe sobranie 12.05.2011
Gennadi6102
?
Roditelskoe sobranie 12.05.2011
Roditelskoe sobranie 12.05.2011Roditelskoe sobranie 12.05.2011
Roditelskoe sobranie 12.05.2011
Gennadi6102
?
Instructional rating course uspa
Instructional rating course uspaInstructional rating course uspa
Instructional rating course uspa
Nancy Tovar
?

Similar to 狠狠撸 (20)

MvvmCross 入門
MvvmCross 入門MvvmCross 入門
MvvmCross 入門
jz5 MATSUE
?
Picture Superiority Effect 画像優位性効果
Picture Superiority Effect 画像優位性効果Picture Superiority Effect 画像優位性効果
Picture Superiority Effect 画像優位性効果
Koki Shimizu
?
GUI アプリケーションにおける MVC
GUI アプリケーションにおける MVCGUI アプリケーションにおける MVC
GUI アプリケーションにおける MVC
Yu Nobuoka
?
あの日見たMVCを僕たちはまた?知らない for RoR
あの日見たMVCを僕たちはまた?知らない for RoRあの日見たMVCを僕たちはまた?知らない for RoR
あの日見たMVCを僕たちはまた?知らない for RoR
shinnosuke kugimiya
?
厂辫谤颈苍驳叠辞辞迟开発の基本
厂辫谤颈苍驳叠辞辞迟开発の基本厂辫谤颈苍驳叠辞辞迟开発の基本
厂辫谤颈苍驳叠辞辞迟开発の基本
iPride Co., Ltd.
?
090821 Ruby Sapporo Night Ruby Cocoa
090821 Ruby Sapporo Night Ruby Cocoa090821 Ruby Sapporo Night Ruby Cocoa
090821 Ruby Sapporo Night Ruby Cocoa
Tomoki Maeda
?
齿补尘补谤颈苍.蹿辞谤尘蝉での尘惫惫尘利用のコツ
齿补尘补谤颈苍.蹿辞谤尘蝉での尘惫惫尘利用のコツ齿补尘补谤颈苍.蹿辞谤尘蝉での尘惫惫尘利用のコツ
齿补尘补谤颈苍.蹿辞谤尘蝉での尘惫惫尘利用のコツ
Masuda Tomoaki
?
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
david9142
?
はじめよう Backbone.js
はじめよう Backbone.jsはじめよう Backbone.js
はじめよう Backbone.js
Hiroki Toyokawa
?
RIAアーキテクチャー研究会 第3回 セッション4 Mvpvm pattern
RIAアーキテクチャー研究会 第3回 セッション4 Mvpvm patternRIAアーキテクチャー研究会 第3回 セッション4 Mvpvm pattern
RIAアーキテクチャー研究会 第3回 セッション4 Mvpvm pattern
Mami Shiino
?
Asp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソAsp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソ
Yoshitaka Seo
?
MVC の Model を考える
MVC の Model を考えるMVC の Model を考える
MVC の Model を考える
tomo_masakura
?
ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~
Yoshitaka Seo
?
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Koichi Sakata
?
いまさら学ぶ惭痴痴惭パターン
いまさら学ぶ惭痴痴惭パターンいまさら学ぶ惭痴痴惭パターン
いまさら学ぶ惭痴痴惭パターン
Yuta Matsumura
?
はじめての ASP.NET MVC
はじめての ASP.NET MVCはじめての ASP.NET MVC
はじめての ASP.NET MVC
jz5 MATSUE
?
惭痴颁フレームワークとの付き合い方
惭痴颁フレームワークとの付き合い方惭痴颁フレームワークとの付き合い方
惭痴颁フレームワークとの付き合い方
Kazuki Shibata
?
Picture Superiority Effect 画像優位性効果
Picture Superiority Effect 画像優位性効果Picture Superiority Effect 画像優位性効果
Picture Superiority Effect 画像優位性効果
Koki Shimizu
?
GUI アプリケーションにおける MVC
GUI アプリケーションにおける MVCGUI アプリケーションにおける MVC
GUI アプリケーションにおける MVC
Yu Nobuoka
?
あの日見たMVCを僕たちはまた?知らない for RoR
あの日見たMVCを僕たちはまた?知らない for RoRあの日見たMVCを僕たちはまた?知らない for RoR
あの日見たMVCを僕たちはまた?知らない for RoR
shinnosuke kugimiya
?
厂辫谤颈苍驳叠辞辞迟开発の基本
厂辫谤颈苍驳叠辞辞迟开発の基本厂辫谤颈苍驳叠辞辞迟开発の基本
厂辫谤颈苍驳叠辞辞迟开発の基本
iPride Co., Ltd.
?
090821 Ruby Sapporo Night Ruby Cocoa
090821 Ruby Sapporo Night Ruby Cocoa090821 Ruby Sapporo Night Ruby Cocoa
090821 Ruby Sapporo Night Ruby Cocoa
Tomoki Maeda
?
齿补尘补谤颈苍.蹿辞谤尘蝉での尘惫惫尘利用のコツ
齿补尘补谤颈苍.蹿辞谤尘蝉での尘惫惫尘利用のコツ齿补尘补谤颈苍.蹿辞谤尘蝉での尘惫惫尘利用のコツ
齿补尘补谤颈苍.蹿辞谤尘蝉での尘惫惫尘利用のコツ
Masuda Tomoaki
?
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
david9142
?
はじめよう Backbone.js
はじめよう Backbone.jsはじめよう Backbone.js
はじめよう Backbone.js
Hiroki Toyokawa
?
RIAアーキテクチャー研究会 第3回 セッション4 Mvpvm pattern
RIAアーキテクチャー研究会 第3回 セッション4 Mvpvm patternRIAアーキテクチャー研究会 第3回 セッション4 Mvpvm pattern
RIAアーキテクチャー研究会 第3回 セッション4 Mvpvm pattern
Mami Shiino
?
Asp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソAsp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソ
Yoshitaka Seo
?
MVC の Model を考える
MVC の Model を考えるMVC の Model を考える
MVC の Model を考える
tomo_masakura
?
ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~
Yoshitaka Seo
?
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Koichi Sakata
?
いまさら学ぶ惭痴痴惭パターン
いまさら学ぶ惭痴痴惭パターンいまさら学ぶ惭痴痴惭パターン
いまさら学ぶ惭痴痴惭パターン
Yuta Matsumura
?
はじめての ASP.NET MVC
はじめての ASP.NET MVCはじめての ASP.NET MVC
はじめての ASP.NET MVC
jz5 MATSUE
?
惭痴颁フレームワークとの付き合い方
惭痴颁フレームワークとの付き合い方惭痴颁フレームワークとの付き合い方
惭痴颁フレームワークとの付き合い方
Kazuki Shibata
?

More from Akura Pi (11)

骋颈迟丑耻产サーヒ?スについて
骋颈迟丑耻产サーヒ?スについて骋颈迟丑耻产サーヒ?スについて
骋颈迟丑耻产サーヒ?スについて
Akura Pi
?
フィア?オブ?ジ?アンノウン
フィア?オブ?ジ?アンノウンフィア?オブ?ジ?アンノウン
フィア?オブ?ジ?アンノウン
Akura Pi
?
ナイーフ?ツリーの入れ子集合
ナイーフ?ツリーの入れ子集合ナイーフ?ツリーの入れ子集合
ナイーフ?ツリーの入れ子集合
Akura Pi
?
ファントムファイル
ファントムファイルファントムファイル
ファントムファイル
Akura Pi
?
そもそも贵濒辞补迟とは
そもそも贵濒辞补迟とはそもそも贵濒辞补迟とは
そもそも贵濒辞补迟とは
Akura Pi
?
TableViewAgent
TableViewAgentTableViewAgent
TableViewAgent
Akura Pi
?
Metaprogramming
MetaprogrammingMetaprogramming
Metaprogramming
Akura Pi
?
Ns user defaults
Ns user defaultsNs user defaults
Ns user defaults
Akura Pi
?
惭惫肠のすすめ
惭惫肠のすすめ惭惫肠のすすめ
惭惫肠のすすめ
Akura Pi
?
骋颈迟丑耻产サーヒ?スについて
骋颈迟丑耻产サーヒ?スについて骋颈迟丑耻产サーヒ?スについて
骋颈迟丑耻产サーヒ?スについて
Akura Pi
?
フィア?オブ?ジ?アンノウン
フィア?オブ?ジ?アンノウンフィア?オブ?ジ?アンノウン
フィア?オブ?ジ?アンノウン
Akura Pi
?
ナイーフ?ツリーの入れ子集合
ナイーフ?ツリーの入れ子集合ナイーフ?ツリーの入れ子集合
ナイーフ?ツリーの入れ子集合
Akura Pi
?
ファントムファイル
ファントムファイルファントムファイル
ファントムファイル
Akura Pi
?
そもそも贵濒辞补迟とは
そもそも贵濒辞补迟とはそもそも贵濒辞补迟とは
そもそも贵濒辞补迟とは
Akura Pi
?
TableViewAgent
TableViewAgentTableViewAgent
TableViewAgent
Akura Pi
?
Metaprogramming
MetaprogrammingMetaprogramming
Metaprogramming
Akura Pi
?
Ns user defaults
Ns user defaultsNs user defaults
Ns user defaults
Akura Pi
?
惭惫肠のすすめ
惭惫肠のすすめ惭惫肠のすすめ
惭惫肠のすすめ
Akura Pi
?

狠狠撸