ページ

2008年1月3日木曜日

CoreDataで非標準データ型を扱う #2

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

前回の続き。
NSImage も同じようにして簡単に扱える。



NSImage も NSCodingプロトコルを実装しているので、エンティティ定義のデータ型で同じように「変換可能」を選ぶだけで良い。



後は普通に NSManagedObjectへ NSImageを設定してやれば良い。



(抜粋)
- (BOOL)tableView:(NSTableView *)aTableView acceptDrop:(id )info
row:(int)row dropOperation:(NSTableViewDropOperation)operation
{
NSPasteboard* pboard = [info draggingPasteboard];
for (NSString* filename in [pboard propertyListForType:NSFilenamesPboardType]) {
NSLog(@"filename=%@", [filename lastPathComponent]);
NSImage *image = [[NSImage alloc] initByReferencingFile:filename];
id item = [NSEntityDescription insertNewObjectForEntityForName:@"ImageItem"
inManagedObjectContext:[self managedObjectContext]];
[item setValue:[filename lastPathComponent] forKey:@"filename"];
[item setValue:image forKey:@"image"];
}
[_table setNeedsDisplay];
return YES;
}


サンプルプログラム:
sample20080103.zip