前回の続き。
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