きりかノート 3冊め

おあそびプログラミング

RubyCocoa で CoreData をもっとらくちんに

またアイディアだけ。

coredata.rb の OSX::CoreData.define_wrapper 関数で、自動的にエンティティのアクセサメソッドを定義することができる。ただ、これは Ruby 側で NSManagedObject のサブクラスを定義しているときだけだ。NSManagedObject にすべてのエンティティのアクセサを定義してしまうのは、いくらなんでもやりすぎだと思うのだ。

でも、それはそれで不便だ。そのためだけに、サブクラスを定義するのもバカらしいし。

じゃあさ、自動的にサブクラス作っちゃえばいいんじじゃないか?モデル情報をロード〜NSManagedObjectContextに登録、という手続きの最中で、

  1. エンティティのクラスが NSManagedObject のとき、自動的にサブクラスを生成。名称はエンティティを CamelCase 化したものに。
  2. エンティティのクラスを上記で生成したサブクラスに差し替え(モデルを変更)
  3. define_wrapper でアクセサを定義

とすることで実現できるように思える。クラス名をどう決定するかは検討の余地があるけれど、なかなか良さそうだと自分は思う。こういうギミックは好き。