LoginSignup
0
1

More than 1 year has passed since last update.

ファイル系アプリを作る際の指南書

Posted at

アプリのホームディレクトリを取得

/var/mobile/Containers/Data/Application/XXXX/Documents/は、アプリケーションのドキュメントディレクトリのパスであり、XXXXはアプリケーションのランダムな識別子です。

このパスを取得するには、FileManagerのurl(for:flag_in:appropriateFor:create:)メソッドを使用します。具体的には、以下のように書くことができます。

let fileManager = FileManager.default
if let documentsDirectory = try? fileManager.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) {
    // documentsDirectoryは"/var/mobile/Containers/Data/Application/XXXX/Documents/"になります
} else {
    // ドキュメントディレクトリが見つからなかった場合の処理
}

上記のコードでは、FileManagerのurl(for:flag_in:appropriateFor:create:)メソッドを使用して、アプリケーションのドキュメントディレクトリのURLを取得しています。in:パラメーターに.userDomainMaskを指定することで、ユーザーディレクトリ内のアプリケーションディレクトリを検索します。appropriateFor:パラメーターにnilを指定することで、アプリケーションディレクトリのURLを取得することができます。create:パラメーターにfalseを指定することで、ディレクトリが存在しない場合は作成しないようにしています。

このコードを実行すると、documentsDirectoryに"/var/mobile/Containers/Data/Application/XXXX/Documents/"のようなURLが格納されます。

ファイル一覧を取得する際に、ドキュメントディレクトリからの相対パスで取得

.producesRelativePathURLsオプションを指定すると、contentsOfDirectory(at:includingPropertiesForKeys:options:)メソッドが返すファイルのURLが、相対パスで表現された形式で返されます。

具体的には、指定されたディレクトリからの相対パスでファイルのURLが生成されます。例えば、Documentsフォルダー内のMyAppフォルダー内のDataフォルダー内のFile1.txtファイルのURLを、相対パスで生成した場合、以下のような形式になります。

file:///MyApp/Data/File1.txt

一方、.producesRelativePathURLsオプションを指定しなかった場合、ファイルのURLは絶対パスで表現された形式で返されます。例えば、Documentsフォルダー内のMyAppフォルダー内のDataフォルダー内のFile1.txtファイルのURLを、絶対パスで生成した場合、以下のような形式になります。

file:///var/mobile/Containers/Data/Application/XXXX/Documents/MyApp/Data/File1.txt

ここで、XXXXはアプリケーションのランダムな識別子です。.producesRelativePathURLsオプションを指定することで、ファイルのURLがよりシンプルで簡潔な形式で取得できるため、アプリケーション開発において便利なオプションの1つとなっています。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1