我正在开发沙盒化的OS X应用程序(OS X 10.10.5,Xcode 6.4)。 在执行过程中,我打开了NSOpenPanel对象。 然后我运行下面的代码片段:
NSString* s=[@"~" stringByExpandingTildeInPath];
NSOpenPanel* panel = [NSOpenPanel openPanel];
[panel setCanChooseDirectories:YES];
[panel setCanChooseFiles:NO];
NSURL* url=[NSURL fileURLWithPath:s];
if(url){
[panel setDirectoryURL:url];
}
[panel setAllowsMultipleSelection:YES];
[panel beginSheetModalForWindow:[self.outlineView window]completionHandler:^(NSInteger result) {}
我希望面板可以打开在目录/Users/xxx/Library/Containers/com.123456.App/下。
而不是打开在目录/Users/xxx下。
应用实际上是构建和部署到目录/Users/xxx/Library/Containers/com.123456.App/Data/下的。
当我调试时,我观察到此时:
if(url){
[panel setDirectoryURL:url];
}
url包含正确的值:file:///Users/xxx/Library/Containers/com.123456.App/Data/
有什么想法吗?
NSURL* url=[NSURL fileURLWithPath:NSHomeDirectory()];
,是否有任何区别? - Brendan ShanksNSOpenPanel
来获取用户授予你的应用程序无权访问的文件的访问权限。容器中的文件可以直接访问,您可以使用通常的API找到目录的内容。 - CRD