« RubyCocoa thread 対策パッチを更新 | トップページ | Pragmatic Programmers の TextMate 本 »

2006.10.04

mogenerator で CoreData のカスタムクラスコード生成

rentzsch.com の "mogenerator: Core Data codegen" で、mogenerator というツールが公開されていた。これは WebObjects にあった EOGenerator というツールの CoreData 版(のようなもの)らしい(WO 知らないのでよくわからん)。コンパイルするには、MiscMerge.framework が必要。

これに CoreData のモデルファイル (.xcdatamodel) を食わせると、{_Foo.h, _Foo.m, Foo.h, Foo.m} といった 4つのファイルを生成する。で、Foo.h や Foo.m に自分の書きたいビジネスロジックを書けばよい。モデルに変更があっても、更新されるのは _Foo.h や _Foo.m だから影響しない。

これが、ジェネレーションギャップパターンによるものなのだけど、Objective-C なら_Foo に相当する中間クラスがなくって、カテゴリでアクセサが定義されてても問題がないと思う。Foo 側がクラス定義文でないとインスタンス変数が書けないので、_Foo 側がカテゴリになるね。

 // Foo.h
 @interface Foo : NSManagedObject
 // write custom logic
 @end
 
 // _Foo.h
 @interface Foo (GenerationGap)
 // accessors
 @end

そんなことよりなにが収穫かっていうと、去年探してた MiscMerge を見つけたってことなのだ。こんなところに!

|

« RubyCocoa thread 対策パッチを更新 | トップページ | Pragmatic Programmers の TextMate 本 »