objective-c – 复制到剪贴板的文件为空,粘贴时“丢失沙箱扩展”

objective-c – 复制到剪贴板的文件为空,粘贴时“丢失沙箱扩展”,第1张

概述我有一个将文件复制到剪贴板的应用程序.以下是相关代码(参数是包含文件路径的NSStrings数组): NSMutableArray *filesToCopy = [[NSMutableArray alloc] init]; int i;for (i=1; i < [arguments count]; i++) { NSString* pathToFile = [argum 我有一个将文件复制到剪贴板的应用程序.以下是相关代码(参数是包含文件路径的Nsstrings数组):

NSMutableArray *filesTocopy = [[NSMutableArray alloc] init];        int i;for (i=1; i < [arguments count]; i++) {    Nsstring* pathTofile = [arguments objectAtIndex:i];    NSURL* fileURL = [[NSURL alloc] initfileURLWithPath:pathTofile];    [filesTocopy addobject:fileURL];}NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];NSInteger changeCount = [pasteboard clearContents];BOol OK = [pasteboard writeObjects:filesTocopy];

但是,在尝试将程序复制到剪贴板的文件粘贴到Mail中的空电子邮件时进行测试时,通常该文件显示为零字节,并且控制台上显示以下错误:

11/13/13 6:27:12.173 AM Mail[627]: Failed to obtain a valID sandBox extension for item: [789514] of flavor: [public.file-url] from the pasteboard.
11/13/13 6:27:12.174 AM Mail[627]: Failed to get a sandBox extensions for itemIDentifIEr (789514). The data for the sandBox extension was NulL

然后在控制台上出现以下错误:

11/13/13 8:24:41.947 AM sandBoxd[172]: ([627]) Mail(627) deny file-read-xattr [full path of file]

奇怪的是,如果我从Finder复制文件,那么每次粘贴都没有错误.换句话说,Finder以某种方式将文件复制到剪贴板,其信息与我的方式不同.为了验证这一点,我做了一个简单的AppleScript来返回剪贴板信息.将文件复制到剪贴板后返回以下内容:

{{«class furl»,115},{«class utf8»,{«class ut16»,232},{string,{Unicode text,230}}

使用Finder将同一文件复制到剪贴板后,Applescript将返回以下内容:

{{«class furl»,33},{«class icns»,795020},112},55},{«class 8BPS»,1630436},{«class BMP »,4194358},{«class TPIC»,1059291},{TIFF picture,4197954},{«class PNGf»,392648},{«class jp2 »,213480},{GIF picture,121307},{JPEG picture,116181},110},55}}

因此,Finder会在剪贴板上提供有关该文件的更多信息以及不同的信息.例如,furl类具有不同的长度.这些额外的信息显然是什么原因导致Mail成功通过从Finder复制的文件,同时它粘贴了我的程序复制的文件时出错.

当我将文件放在剪贴板上或者我应该向粘贴添加哪些额外信息时,我丢失了哪些信息的线索?我猜测Finder不只是粘贴一个NSURL数组,而是一个包含其他文件信息的字典键数组.它似乎也创造了与我不同的furl类.我花了很多时间倾注文档,我坚持这个.

解决方法 我相信我发现了问题.似乎命令行应用程序复制到粘贴板时,存在与未传输的沙盒相关的权限.复制的文件可以很好地粘贴到任何非沙盒应用程序中,但不能粘贴到沙盒应用程序中.在这种情况下的解决方案是只创建一个基于Cocoa的常规.app程序.我仍然不确定如何,但它以正确传输权限的方式复制文件,并且可以将文件粘贴到非沙盒和沙盒应用程序中. 总结

以上是内存溢出为你收集整理的objective-c – 复制到剪贴板的文件为空,粘贴时“丢失沙箱扩展”全部内容,希望文章能够帮你解决objective-c – 复制到剪贴板的文件为空,粘贴时“丢失沙箱扩展”所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1011544.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存