29

私の Mac アプリはサンドボックス化されており、ファイルを保存する必要があります。このファイルをどこに保存しますか? 開いているパネルを使用しないと、これが許可されている特定の場所を見つけることができないようです。これは私がiOSで行う方法です:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:0];

Mac のサンドボックス化されたディレクトリに相当するものは何ですか?

4

4 に答える 4

30

このコード スニペットは、アプリケーションがサンドボックス化されているかどうかに関係なく、Mac で機能します。

サンドボックス化されていない Mac アプリでpathは、ホームのドキュメント フォルダーを参照します/Users/username/Documents

サンドボックス化されたアプリでは、アプリ サンドボックス内のフォルダーを参照します。/Users/username/Library/Containers/com.yourcompany.YourApp/Documents

詳細については、ドキュメントを参照してください。

于 2012-08-03T23:33:00.807 に答える
11

Apple のサンドボックス ガイドは非常に便利で、ここにあります。

ここで私の質問に答えて theAmateurProgrammer が説明したように、基本的にアプリ専用のフォルダーがあります。

~/Library/Container/com.yourcompany.yourappname/

これが私がこれまでに持っているものです。後で改善します。

//Create App directory if not exists:
NSFileManager* fileManager = [[NSFileManager alloc] init];
NSString* bundleID = [[NSBundle mainBundle] bundleIdentifier];
NSArray* urlPaths = [fileManager URLsForDirectory:NSApplicationSupportDirectory 
                                        inDomains:NSUserDomainMask];

NSURL* appDirectory = [[urlPaths objectAtIndex:0] URLByAppendingPathComponent:bundleID isDirectory:YES];

//TODO: handle the error
if (![fileManager fileExistsAtPath:[appDirectory path]]) {
    [fileManager createDirectoryAtURL:appDirectory withIntermediateDirectories:NO attributes:nil error:nil];
}
于 2012-08-03T23:32:10.370 に答える