やはりお前らのcore dataの使い方も間違っている
DESCRIPTION
第6回potatotipsで発表した資料です https://github.com/potatotips/potatotips/wiki/potatotips-6TRANSCRIPT
やはりお前らの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