Core Dataを使ってアプリを開発しています。Macソフトを開発したときにかじったことがあるので,今回も3.0でCore Dataが採用されたことをいいことに(2.0ごめんなさい)データ管理はCore Dataに頼ってしまおうという魂胆。
『iPhone SDK3プログラミング大全』や『サンプルプログラムでマスターするiPhone SDK』の解説を記憶呼び戻しに使いながら,通称「HMDTの赤本」(『Happy Macintosh Developing Time -Third Edition-』)のCore Dataページでおさらいをしていたのですが,やはりどうしてもスッキリしない。
いや,実際アプリ自体は正しく動いているので,それでいいんだろうとは思うのだけど,どうしても言質が取りたいという気持ちがあって,公式ドキュメントもひっくり返してみたものの,こちらも状況証拠ばかり...。
--
スッキリしていなかったのは,Core Dataのエンティティに基づく管理オブジェクト同士のリレーションを結びつける方法。リレーション関係にするつもりの管理オブジェクトを別個に生成したら,この関連をどうすれば登録できるのかについて,真正面から書いてくれているものがほとんど無かったのです。
確かに公式ドキュメント「Core Data Programming Guide」の77-78頁には,「anEmployee.department = newDepartment;」というコードと後は全自動ですとかなんとか説明があります。あとはプログラミングやってりゃ分かるでしょ...的な空気が充満していて,「まぁ,そりゃそうだけど...」と流されてプログラミングはしているわけですが,う〜ん。
日本語の解説書はほとんど一つのエンティティモデルの例だけを扱っていて,最も詳しいはずの赤本もMac開発だとIB中心の記述に留まってしまうため,モヤッと感は消えないままなのでした。
--
最近ようやく「Core Data」の本が登場した模様。さっそく手に入れて読んでみました。副題に「Mac OS X」としか書いていませんが,実際にはiPhoneに関する記述も1章分載っています。
さて,丸ごと一冊Core Dataの本ですから,私をスッキリさせてくれるのかどうか,気になりますが,その結果は。
わ〜い!スッキリ!スッキリ!
To-OneリレーションとTo-Manyリレーションに関する解説で,ハッキリと例示してくれました。To-Oneの場合では,
NSManagedObject *foo = ...;
NSManagedObject *wow = ...;
[foo setValue:wow forKey:@"..."];
ってな感じ(名前は改変してます)でインスタンスをセットすればいいのだと示してくれてました。To-Manyの場合はNSSet絡みでさらに納得のいく解説(それは本をお買いください...)。
これで自信を持ってコーディングできます。この本,CoreDataの入門としては良さそうなので,誰か翻訳するといいのに...。