2

我正在寫一個OS X應用程序,它有一個預覽附件視圖的打開面板。如何檢測是否可以在沙盒應用上訪問NSURL?

問題是,當我選擇不在具有沙箱權限的文件夾上的文件時,我無法預覽它。

在嘗試打開文件之前,是否有任何方法可以判斷文件是否可以被沙箱權限所限制?

我已經嘗試NSURL類的- (BOOL)checkResourceIsReachableAndReturnError:(NSError **)error ,但即使文件受到保護,它也會返回true。

回答

4

推薦的方法是從URL獲取路徑,轉換爲C字符串,然後調用access(在第2節中記錄)來檢查您所需的權限。例如,在大綱檢查讀取訪問:

#include <unistd.h> 

if (access([[url path] UTF8String], R_OK) == 0) 
{ 
    // have access rights to read 
} 
+0

謝謝。有用。 – 2012-07-15 19:19:35

7

對於那些誰希望有儘可能少的普通老式-C線中的代碼:

NSURLIsReadableKey in NSURL - (BOOL)getResourceValue:(out id *)value forKey:(NSString *)key 

或者

NSFileManager - (BOOL)isReadableFileAtPath:(NSString *)path 

如果沙箱限制了您的訪問權限,並且僅僅是access()的可可包裝,沙箱將導致它們返回NO。如果沙箱限制您的訪問權限,沙箱將導致它們返回NO。

相關問題