Xcodeのモデルクラス自動生成機能を使った開発および運用方法など。
自動生成方法
モデルエディタでモデルを選択した後、メニューから「ファイル > 新規ファイル」を選ぶと管理クラスオブジェクトが選べるようになるのでこれを選択する。
自動生成方法
モデルエディタでモデルを選択した後、メニューから「ファイル > 新規ファイル」を選ぶと管理クラスオブジェクトが選べるようになるのでこれを選択する。
生成されるクラス
BlogEntry.h
@class Tag;
@class BlogComment;
@interface BlogEntry : NSManagedObject
{
}
@property (retain) NSDate * created;
@property (retain) NSString * title;
@property (retain) NSString * content;
@property (retain) NSSet* tags;
@property (retain) NSSet* comments;
@end
@interface BlogEntry (CoreDataGeneratedAccessors)
- (void)addTagsObject:(Tag *)value;
- (void)removeTagsObject:(Tag *)value;
- (void)addTags:(NSSet *)value;
- (void)removeTags:(NSSet *)value;
- (void)addCommentsObject:(BlogComment *)value;
- (void)removeCommentsObject:(BlogComment *)value;
- (void)addComments:(NSSet *)value;
- (void)removeComments:(NSSet *)value;
@end
BlogComment.h
@class BlogEntry;
@interface BlogComment : NSManagedObject
{
}
@property (retain) NSString * comment;
@property (retain) NSDate * created;
@property (retain) BlogEntry * entry;
@end
Tag.h
@class BlogEntry;
@interface Tag : NSManagedObject
{
}
@property (retain) NSString * name;
@property (retain) NSSet* entries;
@end
@interface Tag (CoreDataGeneratedAccessors)
- (void)addEntriesObject:(BlogEntry *)value;
- (void)removeEntriesObject:(BlogEntry *)value;
- (void)addEntries:(NSSet *)value;
- (void)removeEntries:(NSSet *)value;
@end
モデル変更時の対応
モデルの変更は、開発中のみならずシステム(アプリ)の運用・保守中にも必ず起こる。独自メソッドを自動生成クラスへ追加すると、その度にコードを追加しなければならなくなるので、これを避ける為にカテゴリを使う。
BlogEntryExtension.h
@interface BlogEntry (Extension)
- (NSArray*)findAll;
自動生成の自動化
mogenerator というソフトが公開されている。
nvie.com » Blog Archive » Automatically generate classes for your Core Data data model
これは未検証だが、使える内容ならビルドフェーズに組み込むと便利かもしれない。