我有一个应用程序,允许我将项目从网络浏览器拖动到应用程序停靠图标。
当我从网络上拖动图像并获取原始数据时 [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/