Ok, Вот код, я использую:Как правильно вставить NSImage из NSPasteboard?
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];
}
Да, это прекрасно работает. Любые идеи, если есть официальное определение для «public.file-url» где-нибудь? Похоже, в документах нет таких деталей, как работает картон. –
Для этого существует константа: 'kUTTypeFileURL' ([документация] (https://developer.apple.com/library/content/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html)) Я получил это значение, исследуя элементы картона в отладчике –