好吧,下面是我使用的代码:如何从NSPasteboard正确粘贴NSImage?
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'([documentation](https://developer.apple.com/library/content/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html))我得到了通过检查调试器中的粘贴板项目来确定值 –