Использование NSCollectionView с CoreData и NSImageView
Я пытаюсь настроить NSCollectionView, который привязан к сущности, и я пытаюсь загрузить изображение в NSImageView из этой сущности. Я сохранил изображение как объект NSData.
Я провел небольшое исследование и обнаружил, что должен установить ValueTransformer, но не смог получить эту работу.
Вот мой код для процесса сохранения моего атрибута изображения pdfImage:
pdf = NSData(contentsOfFile: path)
// pdf to image
let pdfImageRep = NSPDFImageRep(data: pdf)
let factor: CGFloat = 300/72
pdfImageRep?.currentPage = 1
let image = NSImage(size: self.frame.size, flipped: false,
drawingHandler: {
dstRect in
(pdfImageRep?.drawInRect(dstRect))!
return true
})
let scaledImageRep = image.representations.first
scaledImageRep?.pixelsWide = Int((pdfImageRep?.size.width)! * factor)
scaledImageRep?.pixelsHigh = Int((pdfImageRep?.size.height)! * factor)
let pngImageRep = NSBitmapImageRep(data: image.TIFFRepresentation!)
let imageData = pngImageRep?.representationUsingType(NSBitmapImageFileType.NSJPEGFileType, properties: [:])
pdfImage = imageData
Я сохраняю pdfImage позже в коде.
Как я уже сказал, я пытался использовать NSKeyedUnarchiveFromData в качестве ValueTransformer, но это не сработало.
Я делаю это неправильно или есть более простой способ? И может ли кто-нибудь помочь мне с этой проблемой?
Большое спасибо!
1 ответ
Я храню NSImage в Core Data. Тип в модели данных является трансформируемым.
anImage = [[NSImage alloc] initWithContentsOfURL:aFileURL];
if (anImage) {
anImageObject = [NSEntityDescription insertNewObjectForEntityForName:@"Image" inManagedObjectContext:[self managedObjectContext]];
[anImageObject setImage:anImage];
}
Я связываю значение NSImageView со свойством изображения без преобразователя значения.
пс. если вы храните данные изображения (или другие большие двоичные объекты) в Базовых данных, поместите изображение в отдельную сущность или сохраните пути. Смотрите раздел BLOB-объектов в Руководстве по программированию основных данных.