macos - Mac OSX/cocoa - 获取带有 NSPasteBoard 项目的原始数据的位置路径字符串

标签 macos cocoa copy paste nspasteboard

我有一个应用程序,允许我将项目从网络浏览器拖动到应用程序停靠图标。

当我从网络上拖动图像并获取原始数据时 [pBoardItem dataForType:NSPasteboardTypePNG]; 我得到了我需要的原始图像数据,但我还需要知道拍摄图像形式的位置(即 http://www.somedomain.com/somedir/someimage.png )或者是否是本地的(/Users/somedude/photos/myphoto.png)。

如何获取路径位置信息?

提前致谢。

[编辑**删除了我在此处对 stringForType 所做的错误评论]

最佳答案

粘贴板上的所有内容都不是由其所有者(复制到其中的应用程序)放置的。

在粘贴板上查找 NSFilenamesPboardType 和/或 NSURLPboardType

如果它们不存在,则仅复制图像,没有路径或 URL。这是完全可能且有效的,就像从预览或图像编辑器复制图像的一部分一样,应用程序也完全有可能不将路径或 URL 放在粘贴板上,因此不要期望图像必然带有路径或 URL。

when I use the stringForType: function I only get public.png (the name pasteboard gave it temporarily).

呃?您是说当您请求某种类型的字符串时,您返回的字符串是 @"public.png" 吗?

如果是这样,则与粘贴板上的图像无关; @"public.png" 将是粘贴板的内容。也许您刚刚自己将“public.png”复制到剪贴板?

如果您的意思是检索 @"public.png" 类型的字符串,(1) 这不是临时名称,而是 UTI对于 PNG,(2) 您应该使用命名常量,例如 kUTTypePNG,而不是硬编码文字,(3) 该类型的值不应该是字符串。我不希望从该类型的 stringForType: 消息中获得任何有用的信息。

关于macos - Mac OSX/cocoa - 获取带有 NSPasteBoard 项目的原始数据的位置路径字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7546651/

相关文章:

macos - 在 10.10 上,NSPopover 中的 NSViewController 通过从 swift 中的 NSStatusItem 中转出

cocoa - 如何让 finder 同步扩展自动加载?

excel - 如何将同一列中的值复制到下一列? Excel VBA

c++ - undefined reference 复制ctor和ctor

objective-c - 我可以对表格进行编程使其看起来像表格吗

postgresql - Postgresql查询中的COPY命令

objective-c - Cocoa/Obj-c : How to fetch string from english localizable. 字符串,无论首选本地化如何

css - 用于删除粗体文本的 Wow JS 解决方案在 Macbook Pro (Google Chrome) 上不起作用

c# - 用于 .NET/C# 编程的最佳等效 VisualStudio IDE for Mac

cocoa - 如何创建包含 NSLineSeparatorCharacter 的 NSString?