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-Wrappers である場合、これらは NO を返します。サンドボックスは、アクセスを制限する場合、これらが NO を返すようにします。

于 2013-08-20T14:54:06.077 に答える
4

推奨される方法は、URL からパスを取得し、C 文字列に変換してから (man のセクション 2 に記載されている) を呼び出しaccessて、必要なアクセス許可を確認することです。たとえば、読み取りアクセスを確認するための概要は次のとおりです。

#include <unistd.h>

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