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

Post on 13-Jun-2015

5.763 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

potatotips #6

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

自己紹介

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

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

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

本題

全力でdisるよ!

CoreDataの使い方について

まず言いたいのが

AppDelegateが

NSManagedObjectContextやNSManagedObjectModelを

生成したりすべき

ではない

ということ。

AppDelegateは

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

のが役目。

これを忘れるから

お前らはすぐ

AppDelegateを肥満にする

( )゚Д゚( ;)

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

次に言いたいのは、

データの取得の際は

常にNSFetchedResultsController

を使う

必要はない

これは

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

お前ら釣られすぎ

m9(^Д^)

NSFetchedResultsController は

UITableViewがある場合など

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

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

NSFetchRequestで充分。

使いわけ重要。

さいごに

NSManagedObject

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

プロパティを使わずに

NSMangedObjectクラスの

setValue:forKey:を使って

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

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

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

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

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

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

やはり

これも

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

お前らは

釣られすぎている

(☝  ՞ਊ  ՞)☝

おわり参考

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

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

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

top related