簡體   English   中英

沙盒應用中的NSOpenPanel忽略提供的目錄URL

[英]NSOpenPanel in sandboxed app ignores provided directory URL

我正在構建沙盒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/

任何想法?

您是否NSOpenPanel在應用程序的容器中使用NSOpenPanel 容器適用於應用程序的內部數據/支持文件(用戶通常不需要訪問)。 NSOpenPanel / NSSavePanel用於用戶從他們自己的文檔中選擇文件/目錄,這些文檔/目錄不會位於容器中。

另外,請考慮使用NSFileManager URLsForDirectory:inDomains:將NSURL轉換為所需的路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM