やはりお前らのcore dataの使い方も間違っている

49
やはりお前らのCoreData の使い方も間違っている potatotips #6 株式会社キュリオシティソフトウェア @yimajo

Upload: -

Post on 13-Jun-2015

5.763 views

Category:

Technology


3 download

DESCRIPTION

第6回potatotipsで発表した資料です https://github.com/potatotips/potatotips/wiki/potatotips-6

TRANSCRIPT

Page 1: やはりお前らのCore Dataの使い方も間違っている

やはりお前らのCoreDataの使い方も間違っている

potatotips #6

株式会社キュリオシティソフトウェア @yimajo

Page 2: やはりお前らのCore Dataの使い方も間違っている

自己紹介

• 株)キュリオシティソフトウェア代表取締役(今城善矩)

• まったりiOSアプリの受託開発もしているので仕事の話があれば相談に乗れる体制ですよ

• 現状サーバー/Androidアプリ込みなら発注するというお話はお断りしてしまっていたのですが、もし得意な方でやろうぜ!という方がいれば教えてください。

Page 3: やはりお前らのCore Dataの使い方も間違っている

本題

Page 4: やはりお前らのCore Dataの使い方も間違っている

全力でdisるよ!

Page 5: やはりお前らのCore Dataの使い方も間違っている

CoreDataの使い方について

Page 6: やはりお前らのCore Dataの使い方も間違っている

まず言いたいのが

Page 7: やはりお前らのCore Dataの使い方も間違っている

AppDelegateが

Page 8: やはりお前らのCore Dataの使い方も間違っている

NSManagedObjectContextやNSManagedObjectModelを

生成したりすべき

Page 9: やはりお前らのCore Dataの使い方も間違っている

ではない

Page 10: やはりお前らのCore Dataの使い方も間違っている

ということ。

Page 11: やはりお前らのCore Dataの使い方も間違っている

AppDelegateは

Page 12: やはりお前らのCore Dataの使い方も間違っている

iOSなどから変化に応じて直接処理を受け付ける

Page 13: やはりお前らのCore Dataの使い方も間違っている

のが役目。

Page 14: やはりお前らのCore Dataの使い方も間違っている

これを忘れるから

Page 15: やはりお前らのCore Dataの使い方も間違っている

お前らはすぐ

Page 16: やはりお前らのCore Dataの使い方も間違っている

AppDelegateを肥満にする

Page 17: やはりお前らのCore Dataの使い方も間違っている

( )゚Д゚( ;)

Page 18: やはりお前らのCore Dataの使い方も間違っている

得意なことだけをやらせろ。

Page 19: やはりお前らのCore Dataの使い方も間違っている

次に言いたいのは、

Page 20: やはりお前らのCore Dataの使い方も間違っている

データの取得の際は

Page 21: やはりお前らのCore Dataの使い方も間違っている

常にNSFetchedResultsController

を使う

Page 22: やはりお前らのCore Dataの使い方も間違っている

必要はない

Page 23: やはりお前らのCore Dataの使い方も間違っている

これは

Page 24: やはりお前らのCore Dataの使い方も間違っている

Xcodeが生成する コードテンプレートに

Page 25: やはりお前らのCore Dataの使い方も間違っている

お前ら釣られすぎ

Page 26: やはりお前らのCore Dataの使い方も間違っている

m9(^Д^)

Page 27: やはりお前らのCore Dataの使い方も間違っている

NSFetchedResultsController は

UITableViewがある場合など

Page 28: やはりお前らのCore Dataの使い方も間違っている

indexPath(sectionとrow)に 対応している場合に便利

Page 29: やはりお前らのCore Dataの使い方も間違っている

例えば一件だけデータがほしいだけなら

Page 30: やはりお前らのCore Dataの使い方も間違っている

NSFetchRequestで充分。

Page 31: やはりお前らのCore Dataの使い方も間違っている

使いわけ重要。

Page 32: やはりお前らのCore Dataの使い方も間違っている

さいごに

Page 33: やはりお前らのCore Dataの使い方も間違っている

NSManagedObject

Page 34: やはりお前らのCore Dataの使い方も間違っている

サブクラスをモデルデータから自動生成しているのに

Page 35: やはりお前らのCore Dataの使い方も間違っている

プロパティを使わずに

Page 36: やはりお前らのCore Dataの使い方も間違っている

NSMangedObjectクラスの

setValue:forKey:を使って

Page 37: やはりお前らのCore Dataの使い方も間違っている

わざわざ文字列のKeyを使って

Page 38: やはりお前らのCore Dataの使い方も間違っている

データを操作してしまってる

Page 39: やはりお前らのCore Dataの使い方も間違っている

//Eventというクラスを文字列指定で編集しようとする NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:managedObjectContext]; !!//NSManagedObjectをそのまま使っているので //setValue:forKeyによりキー値コーディングすることになる [entity setValue:@“potatotips” forKey:@“name"];

Page 40: やはりお前らのCore Dataの使い方も間違っている

NSManagedObjectのサブクラスを自動生成していれば

Page 41: やはりお前らのCore Dataの使い方も間違っている

クラスのプロパティを利用できる

Page 42: やはりお前らのCore Dataの使い方も間違っている

//クラス名を文字列で取得して名前で呼び出せるように準備 //EXMSubClassは自動生成したNSManagedObjectのサブクラス NSString *className = NSStringFromClass([EXMSubClass class]); !EXMSubClass *entity = [NSEntityDescription entityForName:className inManagedObjectContext:managedObjectContext]; !!//サブクラスにnameの属性があればプロパティでアクセスできる entity.name = @“potatotips”;

Page 43: やはりお前らのCore Dataの使い方も間違っている

やはり

Page 44: やはりお前らのCore Dataの使い方も間違っている

これも

Page 45: やはりお前らのCore Dataの使い方も間違っている

(サブクラスを生成していない)Xcodeのコードテンプレートに

Page 46: やはりお前らのCore Dataの使い方も間違っている

お前らは

Page 47: やはりお前らのCore Dataの使い方も間違っている

釣られすぎている

Page 48: やはりお前らのCore Dataの使い方も間違っている

(☝  ՞ਊ  ՞)☝

Page 49: やはりお前らのCore Dataの使い方も間違っている

おわり参考

やはりお前らのiOS7対応は間違っている http://www.slideshare.net/YoshinoriImajo/ios7-30039408

!やはりお前らのMVCは間違っている

http://www.slideshare.net/MugeSo/mvc-14469802