好的,以下是我使用的代码:
{x[0]: x[1:] for x in lst}
# {'267-10-7633': ['66', '85', '74', 0], '709-40-8165': ['71', '96', '34', 0]}
我有三种方式可以让图像进入应用程序:
我尝试了其他方法,包括苹果代码片段(相同的结果,我得到图标而不是图片本身):
if let image = NSImage(pasteboard: pasteboard){
//..
}
答案 0 :(得分:4)
粘贴板确实包含文件的路径,您可以使用它来从磁盘加载图像:
func paste(_ sender: AnyObject) {
let pasteboard = NSPasteboard.general()
if let data = pasteboard.data(forType: kUTTypeFileURL),
let str = String(data: data, encoding: .utf8),
let url = URL(string: str),
let image = NSImage(contentsOf: url)
{
imageView.image = image
}
}
答案 1 :(得分:2)
那是因为Finder没有复制图像,它正在复制文件项。这个的主要表示是一个URL,但另一个表示是文件图标。所有表示都不是文件的内容(即JPEG图像)。
您可以先检查粘贴板是否可以提供URL并从URL创建图像。只有在失败时才尝试直接从粘贴板创建图像。
或者,您可以枚举pasteboardItems
,它会按照源应用认为最相关的顺序为您提供。在第一个停止,它是图像文件的URL或图像数据。