Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

8,689 views

Published on

第6回potatotipsで発表した資料です

https://github.com/potatotips/potatotips/wiki/potatotips-6

Published in: Technology
  • Be the first to comment

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

  1. 1. やはりお前らのCoreData の使い方も間違っている potatotips #6 株式会社キュリオシティソフトウェア @yimajo
  2. 2. 自己紹介 • 株)キュリオシティソフトウェア代表取締役(今城善矩) • まったりiOSアプリの受託開発もしているので仕事の話が あれば相談に乗れる体制ですよ • 現状サーバー/Androidアプリ込みなら発注するというお話 はお断りしてしまっていたのですが、もし得意な方でやろ うぜ!という方がいれば教えてください。
  3. 3. 本題
  4. 4. 全力でdisるよ!
  5. 5. CoreDataの使い方について
  6. 6. まず言いたいのが
  7. 7. AppDelegateが
  8. 8. NSManagedObjectContextや NSManagedObjectModelを 生成したりすべき
  9. 9. ではない
  10. 10. ということ。
  11. 11. AppDelegateは
  12. 12. iOSなどから変化に応じて直 接処理を受け付ける
  13. 13. のが役目。
  14. 14. これを忘れるから
  15. 15. お前らはすぐ
  16. 16. AppDelegateを肥満にする
  17. 17. ( )゚Д゚( ;)
  18. 18. 得意なことだけをやらせろ。
  19. 19. 次に言いたいのは、
  20. 20. データの取得の際は
  21. 21. 常に NSFetchedResultsController を使う
  22. 22. 必要はない
  23. 23. これは
  24. 24. Xcodeが生成する コードテンプレートに
  25. 25. お前ら釣られすぎ
  26. 26. m9(^Д^)
  27. 27. NSFetchedResultsController は UITableViewがある場合など
  28. 28. indexPath(sectionとrow)に 対応している場合に便利
  29. 29. 例えば一件だけデータがほし いだけなら
  30. 30. NSFetchRequestで充分。
  31. 31. 使いわけ重要。
  32. 32. さいごに
  33. 33. NSManagedObject
  34. 34. サブクラスをモデルデータか ら自動生成しているのに
  35. 35. プロパティを使わずに
  36. 36. NSMangedObjectクラスの setValue:forKey:を使って
  37. 37. わざわざ文字列のKeyを使っ て
  38. 38. データを操作してしまってる
  39. 39. //Eventというクラスを文字列指定で編集しようとする NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:managedObjectContext]; ! ! //NSManagedObjectをそのまま使っているので //setValue:forKeyによりキー値コーディングすることになる [entity setValue:@“potatotips” forKey:@“name"];
  40. 40. NSManagedObjectのサブク ラスを自動生成していれば
  41. 41. クラスのプロパティを利用で きる
  42. 42. //クラス名を文字列で取得して名前で呼び出せるように準備 //EXMSubClassは自動生成したNSManagedObjectのサブクラス NSString *className = NSStringFromClass([EXMSubClass class]); ! EXMSubClass *entity = [NSEntityDescription entityForName:className inManagedObjectContext:managedObjectContext]; ! ! //サブクラスにnameの属性があればプロパティでアクセスできる entity.name = @“potatotips”;
  43. 43. やはり
  44. 44. これも
  45. 45. (サブクラスを生成していない) Xcodeのコードテンプレートに
  46. 46. お前らは
  47. 47. 釣られすぎている
  48. 48. (☝  ՞ਊ  ՞)☝
  49. 49. おわり 参考 やはりお前らのiOS7対応は間違っている http://www.slideshare.net/YoshinoriImajo/ios7-30039408 ! やはりお前らのMVCは間違っている http://www.slideshare.net/MugeSo/mvc-14469802

×