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の画面の内容など、コードで再読み込み処理とか的なことが必要になる。だから更新したのにかわんないぉ? という場合は、画面の処理を忘れているかもしれない
と色々書いたが何だか色々間違っている気もするよ。。