insertNewObjectForEntityForNameをどこで行うか?

2013年8月2日金曜日

CoreData 書籍

t f B! P L
プロの力を身につける iPhone/iPadアプリケーション開発の教科書
藤田 泰介
ソフトバンククリエイティブ
売り上げランキング: 24,891

 現在この本で勉強中。
 
 このCoreDataのサンプルアプリは、 detailItemのゲッター(?)をオーバーラード(?)して、_detailItemがなかったら、insertNewObjectForEntityForName でオブジェクトを作っている。
 追加でDetailに遷移して、doneボタンを押さずにMasterに戻ると、空のセルがでてきます。(オブジェクトは追加されている)
 更新でDetailに遷移して、doneボタンを押さずにMasterに戻ると、編集した内容は消えます。

 これはサンプルなのでミニマムなコードのようです。

 追加でsaveせずに戻ったときは空オブジェクトがないといいなぁ、と思って、じゃあどうすれば良いのかしらと考えましたが、SQLと同じで、doneボタンが押されたときに、オブジェクトを作ってしまえば良いのではないかと思いました。

 doneのなかで、_detailItemがなかったらinsertNewObjectForEntityForNameでオブジェクトを作って、その後は更新の場合と同じです。

 こうすると、追加でも更新でも、doneボタンを押さずにMasterに戻ったときの挙動は、似た感じになります。両方とも、無かったことになる。

  • どういう操作にするか
  • どういうタイミングでデータを更新するか
 そこらへんが使い勝手の良さとかにつながるので、重要な部分でしょう。基本は、
  • ユーザーの入力したものはふいにしない
  • 入力更新がある場合はどうするか確認する
だと思いますが、直感的なインターフェースだと、いちいち確認しない場合もあります。
  • 追加の時は保存されていいけど
  • 更新はちょっと戻りたい
 個人的にはそんな優柔不断なことを思ったり。。


このブログを検索

QooQ