4

我正在编写一个 OS X 应用程序,它有一个带有预览附件视图的打开面板。

问题是当我选择一个不在具有沙盒权限的文件夹中的文件时,我无法预览它。

在尝试打开文件之前,有什么方法可以判断文件是否会受到沙箱权限的限制?

我已经尝试- (BOOL)checkResourceIsReachableAndReturnError:(NSError **)error NSURL该类,但即使文件受到保护,它也会返回 true。

4

2 回答 2

9

对于那些希望代码中尽可能少的 Plain-Old-C 行的人:

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

或者

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

如果沙箱限制了您的访问并且仅仅是 access() 周围的 Cocoa-Wrapper,那么沙箱将导致这些返回 NO。如果沙盒限制您的访问,沙盒将导致这些返回 NO。

于 2013-08-20T14:54:06.077 回答
4

推荐的方法是从 URL 中获取路径,转换为 C 字符串,然后调用access(在 man 的第 2 节中记录)来检查您需要的权限。例如,在大纲中检查读取访问:

#include <unistd.h>

if (access([[url path] UTF8String], R_OK) == 0)
{
   // have access rights to read
}
于 2012-07-15T19:15:48.577 回答