1. ホーム
  2. ios

[解決済み] ドキュメントディレクトリ(NSDocumentDirectory)とは何ですか?

2022-07-08 11:50:18

質問

iOSアプリのdocumentsディレクトリとは何か、どのような場合に使用するのか、どなたか教えてください。

現在、私が信じていることは以下のとおりです。

私には、ユーザーがアプリに必要なあらゆるファイルを保存できる中心的なフォルダーであるように思えます。

これは、Core Dataがデータを保存する場所とは別の場所になるのでしょうか?

アプリごとにドキュメントディレクトリを取得するようです。

documentsディレクトリのサブディレクトリ、例えばdocumentsディレクトリ/imagesとか、documentsディレクトリ/videosとか、自由に作っていいんですよね?

どのように解決するのですか?

アプリは (ジェイルブレイクされていないデバイスでは) サンドボックス環境でのみ実行されます。つまり、アプリは自身のコンテンツ内のファイルとディレクトリにのみアクセスできます。例えば ドキュメント ライブラリ .

を参照してください。 iOS アプリケーション プログラミング ガイド .

にアクセスするには ドキュメント ディレクトリにアクセスするには、アプリケーションサンドボックスの

iOS 8 以降では、この方法を推奨します。

+ (NSURL *)applicationDocumentsDirectory
{
     return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
}

iOS 7以前をサポートする必要がある場合

+ (NSString *) applicationDocumentsDirectory 
{    
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *basePath = paths.firstObject;
    return basePath;
}

これは ドキュメント ディレクトリは、アプリが作成する、あるいは必要とするファイルやサブディレクトリを保存することができます。

ディレクトリ内のファイルにアクセスするには ライブラリ ディレクトリにあるファイルにアクセスするには、アプリのサンドボックスで ( paths の代わり)。

[NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) objectAtIndex:0]