CoreDataへべれけメモ

もうすぐXcode変わりそうな予感するけど。


JDBC的にいえばコネクションはどこからとってくんのよ?

CoreDataを使うには、Master-Detail Application のコードからもらってくる。なのでそれ用の空っぽプロジェクト(例えばのプロジェクト名 TemplateCoreData )を作っておく

TemplateCoreDataの作り方
Project を新規で作成するとき、Master-Detail Application で User Core Dataにチェックをいれる

今から作るのはMaster-Detailじゃないプロジェクトなんだけどな、という場合も、もらってくると良い。

もってくるコードは AppDelegate の両方ほとんど全部。AppDelegate.m のなかはいろいろやってるけど、自分で直さなければならないところは、CoreDataを使いたいViewControllerに、NSManagedObjectContext のオブジェクトを渡すことだ。それゆえに、ViewController 側は NSManagedObjectContextのプロパティがいる。AppDelegate.m でセットできない遠くの ViewControllerの場合はどうすんの? かというと、

AppDelegate *appDelegate 
  = (AppDelegate *)[[UIApplication sharedApplication] delegate];
//appDelegate.managedObjectContext でとれる

でもいいし、作った NSManagedObject のサブクラスを渡していくなら、それが NSManagedObjectContext をプロパティとしてもっているから(!)それを使えば良い。


NSManagedObjectContext はスレッドセーフじゃないらしい。(←よくわかってないがメモ)


INSERT,UPDATEはどうやって・・・あれ?
両方「save」ぽいよ!

DELETEは?
deleteObject らしい。


画面との連動
データの追加変更削除があれば、画面に表示されている内容も変わってくれないとおかしいのだが、例えばTableViewの画面の内容など、コードで再読み込み処理とか的なことが必要になる。だから更新したのにかわんないぉ? という場合は、画面の処理を忘れているかもしれない


と色々書いたが何だか色々間違っている気もするよ。。