画像の表示と保存に必要な情報が定義されている。位置情報は float、imageは Transformable(変換可能)でかつ「一時」的なデータとしている。imageの実態は別途ファイルで管理しているので CoreData上ではメモリ上にあるだけで良い。
モデリングツールで定義した後、このモデルのソースコードを作成する。モデリングツールを開いたままで、メニューから「新規ファイル」を選び、一番したの「設計 - 管理オブジェクトクラス」を選ぶと続いてアシスタントが表示される。
ソースコードを作らなくとも CoreDataは使えるが、モデルに関する特別な処理(値変換など)を記述する場合にはあった方がカスタマイズしやすい。
サンプルではドラッグ&ドロップ処理用のメソッドをいくつか定義している。
- (NSRect)rect
{
return NSMakeRect([self.x floatValue], [self.y floatValue], [self.width floatValue], [self.height floatValue]);
}
- (void)moveWith:(NSPoint)moving_vector
{
self.x = [NSNumber numberWithFloat:([self.x floatValue] + moving_vector.x)];
self.y = [NSNumber numberWithFloat:([self.y floatValue] + moving_vector.y)];
}
CoreDataでは数値型がすべて NSNumberになるのが難点。NSRectなどの構造体がそのまま扱えると便利なのだが。