Хорошо, вот код, который я использую:
if let image = NSImage(pasteboard: pasteboard){
//..
}
И у меня есть 3 способа, как изображения попадают в приложение:
- Если изображение перетаскивается в окно и используется монтажный стол перетаскивания, изображение правильное.
- Если изображение копируется в браузере, «Копировать изображение».. и с помощью NSPasteboard.general().. Изображение вставляется правильно.
- Если изображение копируется в Finder, щелкните правой кнопкой мыши -> Копировать "image-name.jpg". тогда вставленное изображение НЕ является правильным. Вместо этого я получаю значок для типа файла JPEG.
Я пробовал другие методы, в том числе фрагмент яблока (тот же результат, я получаю значок вместо самого изображения):
NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
NSArray *classArray = [NSArray arrayWithObject:[NSImage class]];
NSDictionary *options = [NSDictionary dictionary];
BOOL ok = [pasteboard canReadObjectForClasses:classArray options:options];
if (ok) {
NSArray *objectsToPaste = [pasteboard readObjectsForClasses:classArray options:options];
NSImage *image = [objectsToPaste objectAtIndex:0];
[imageView setImage:image];
}