2016-01-13 54 views
0

我所做的是設置com.apple.security.files.downloads.read-writetrue,並查找了Apple Sandbox相關文檔,但我無法弄清楚如何獲取下載文件夾路徑,我得到的仍然是容器路徑,如下所示:/Users/username/Library/Containers/com.errpro.Snell/Data/Downloads ,我使用的方法是NSSearchPathForDirectoriesInDomains。我見過有人使用getpwent來獲得路徑,但似乎不合適。任何幫助,將不勝感激。如何在沙盒應用中獲取/ Users/username/Downloads路徑?

+0

如果您在編寫代碼時遇到問題,請使用代碼更新您的問題,並指出您遇到的問題。 – rmaddy

+0

爲什麼你找到'getpwent'(或'getpwuid')不合適?這是[有效路線](http://stackoverflow.com/questions/9553390/how-do-i-get-the-users-home-directory-in-objective-c-in-a-sandboxed-app)到一個解決方案。 – CRD

+0

@CRD,這是真的,它是檢索用戶的主目錄的有效解決方案。但如何獲得下載目錄?如果用戶的家不在常規路徑中,並且下載沒有命名爲「下載」的dir,該怎麼辦? – oxnz

回答

2

您應該使用URLForDirectory方法。該方法找到當前用戶的名稱並將其插入到URL路徑中。

NSFileManager  *fm = [NSFileManager defaultManager]; 
NSURL    *downloadsURL; 

downloadsURL = [fm URLForDirectory:NSDownloadsDirectory 
        inDomain:NSUserDomainMask appropriateForURL:nil 
        create:YES error:nil]; 
+0

對不起,你的回答似乎仍然不能在沙盒環境中工作,導致結果是file:///Users/username/Library/Containers/com.errpro.prodname/Data/Downloads/,但是'/ Users/username/Downloads '是我需要的。 – oxnz

+0

/Users/username/Library/Containers/com.errpro.prodname/Data/Downloads是指向/ Users/username/Downloads的別名。它對你的應用程序是透明的 –

+0

我再次嘗試了,你是對的。下載目錄是到當前用戶的下載目錄的符號鏈接。這是'com.apple.security.files.downloads.read-write'配置的效果嗎? – oxnz