Cocoa 拖放到沙盒应用程序中
我有一个应用程序,需要将文件保存在与源文件相同的位置,并将其拖到应用程序的窗口中。沙箱甚至在您选中“用户选择的文件”之后也不允许我使用沙箱Cocoa 拖放到沙盒应用程序中,cocoa,permissions,appstore-sandbox,Cocoa,Permissions,Appstore Sandbox,我有一个应用程序,需要将文件保存在与源文件相同的位置,并将其拖到应用程序的窗口中。沙箱甚至在您选中“用户选择的文件”之后也不允许我使用沙箱 谢谢。你看过苹果的文档了吗,特别是 重要提示:尽管您可以支持拖动文件路径,但通常应避免这样做,除非您确定 目标应用程序永远不会在应用程序沙盒中运行。如果你使用 NSString,OSX无法知道该字符串是否应为 解释为路径;因此,OSX不会扩展目标 应用程序的沙箱,以允许访问该位置的文件或目录 地点 相反,请使用NSURL、书签或文件名粘贴板类型 你看过苹果的
谢谢。你看过苹果的文档了吗,特别是 重要提示:尽管您可以支持拖动文件路径,但通常应避免这样做,除非您确定 目标应用程序永远不会在应用程序沙盒中运行。如果你使用 NSString,OSX无法知道该字符串是否应为 解释为路径;因此,OSX不会扩展目标 应用程序的沙箱,以允许访问该位置的文件或目录 地点 相反,请使用NSURL、书签或文件名粘贴板类型
你看过苹果的文档了吗,尤其是 重要提示:尽管您可以支持拖动文件路径,但通常应避免这样做,除非您确定 目标应用程序永远不会在应用程序沙盒中运行。如果你使用 NSString,OSX无法知道该字符串是否应为 解释为路径;因此,OSX不会扩展目标 应用程序的沙箱,以允许访问该位置的文件或目录 地点 相反,请使用NSURL、书签或文件名粘贴板类型
将文件拖放到应用程序时,sandbox仅授予对此文件的访问权限。你甚至不能重命名它。要在同一目录中写入新文件,请使用NSOpenPanel获得对该目录的写入权限 例如:
将文件拖放到应用程序时,sandbox仅授予对此文件的访问权限。你甚至不能重命名它。要在同一目录中写入新文件,请使用NSOpenPanel获得对该目录的写入权限 例如:
谢谢你的回答,很好用。。。但是有没有办法在应用程序首选项中记录路径,而不是每次启动应用程序时都打开OpenPanel?这是一个全新的问题。请参阅此处的文档:“安全范围的书签和持久资源访问”,或在StackOverflow上搜索此文档。感谢您的回答,它非常有用。。。但是有没有办法在应用程序首选项中记录路径,而不是每次启动应用程序时都打开OpenPanel?这是一个全新的问题。请参阅此处的文档:“安全范围的书签和持久性资源访问”,或在StackOverflow上搜索。我在OSX 10.9中看到,在拖放操作完成后,沙盒只允许我对拖动的目录进行读取访问,即使我注册了
nsurlboardtype
拖动类型的视图。我在OSX 10.9中看到,在拖放操作完成后,沙箱仅允许我读取拖动目录,即使我注册了nsurlboardtype
拖动类型的视图。
- (void)showGrantAccessForFolderOfFile:(NSURL *)urlOfFile
{
NSURL *urlToGrant = [urlOfFile URLByDeletingLastPathComponent];
NSOpenPanel *openPanel = [NSOpenPanel openPanel];
[openPanel setAllowsMultipleSelection:NO];
[openPanel setCanChooseDirectories:YES];
[openPanel setCanChooseFiles:NO];
[openPanel setCanCreateDirectories:NO];
[openPanel setDirectoryURL:urlToGrant];
[openPanel setTitle:@"Grant Access To Folder"];
[openPanel setMessage:@"Please grant access to the file’s folder"];
[openPanel setPrompt:@"Grant Access"];
// then run the panel as in documentation and handle errors
// could also set a delegate and grey out other directories
// store the sandboxed to access it later again
}