mogeneratorでモデルクラス作成

アイコン

mogenerator

mogenerator

mogeneratorの基本

例) CoreData.xcdatamodel にPerson というEntityがあるの場合

mogeneratorのインストール

インストーラーでインストール

Homebrewでインストール

brew install mogenerator

mogeneratorの使い方

$ mogenerator \
  --template-var arc=true \ # ARC有効のテンプレを使う
  -m /path/to/Model.xcdatamodeld \
  -O /path/to/output/

生成されたクラスを眺める

XcodeのCreate ... Subclass... との違い

Attributes structの利用例

extern const struct EventAttributes {
    __unsafe_unretained NSString *sortIndex;
    __unsafe_unretained NSString *timeStamp;
} EventAttributes;
    NSDate *beginDate = ...;
    NSDate *endDate = ...;
    [NSPredicate predicateWithFormat:@"(%@ <= %K) AND (%K <= %@)",
                              beginDate,
                              EventAttributes.timeStamp,
                              EventAttributes.timeStamp,
                              endDate];

簡単にまとめると

発展編

モデルの親クラスを指定する

human -> machine -> base-class

template-var

<$if TemplateVar.arc$>
@property (nonatomic, strong) <$Relationship.immutableCollectionClassName$> *<$Relationship.name$>;
<$else$>
@property (nonatomic, retain) <$Relationship.immutableCollectionClassName$> *<$Relationship.name$>;
<$endif$>

自作のテンプレートの作成

テンプレートをいじれば

自作のテンプレートの使用

  1. 自作テンプレートの入れるディレクトリを作る(mogenerator-templatesとする)
  2. mogenerator-templates 内に
    • machine.{h,m}.motemplatehuman.{h,m}.motemplate を作成する
    • 合計4つのテンプレートファイルを作る
  3. --template-path /path/to/mogenerator-templates/ でテンプレートディレクトリのパスを指定する

まとめ

おわり

おまけ

JSONからモデルクラスを生成する

デコンパイルして勝手にモデルを作る

参考