LoginSignup
0
2

iOSのファイルシステムについて理解する【WIP】

Posted at

はじめに

今回画像データを扱うことになり、画像データの保存先をRealmなどのDBではなくファイルシステムの領域へと保存することにしました。
本記事は、iOSのファイルシステムについて理解して設計・開発に役立てること、また将来の自身の振り返りに役立てることを目的にしています。

参考文献

File System Basics(Updated: 2018-04-09)
https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html

↑6年前のアーカイブドキュメントですが図もあり分かりやすいため上記資料をベースに記載していきます。

iOSのファイルシステム

iOSファイルシステムについて

iOSファイルシステムとは、単独で実行されるアプリを対象としており、ユーザーはファイルシステムへ直接アクセスできない。

iOS標準ディレクトリ

セキュリティ上の理由により、iOSアプリとファイルシステムのやり取りはアプリのSandox内のディレクトリに制限されている。
アプリインストール時にインストーラーがアプリのSandbox内に複数のコンテナディレクトリを生成する。

image.png
Figure 1-1 An iOS app operating within its own sandbox directory

iOSアプリで一般的に利用されるディレクトリ

  • AppName.app
    • アプリのバンドル
    • アプリとすべてのリソースが含まれ、このディレクトリに書き込むことはできない
    • ただし、アプリのバンドルに保存されているリソースの読み取り専用アクセスを取得することは可能
    • このディレクトリはiTunes, iCloudによってバックアップされない
  • Documents/
    • ユーザーが作成したコンテンツを保存するために使用する
    • このディレクトに保存された内容は、ファイル共有を通じてユーザーが利用できる → ユーザーに公開する可能性のあるファイルのみ配置する必要がある
    • このディレクトリはiTunes, iCloudによってバックアップされる
  • Documents/Inbox
    • このディレクトリを利用して、アプリが外部から開くように要求されたファイルにアクセスする
      • 例)メールアプリの場合、アプリに関連されたメールの添付ファイルをここに保存する
    • このディレクトリはiTunes, iCloudによってバックアップされる
  • Library/
    • サブディレクトリにApplication SupportCachesFrameworksPreferencesなどを持つ
    • サブディレクトリを利用(作成?)することでユーザーに公開したくないファイルを利用することができる?(⚠理解が曖昧です)
    • Cachesを除くディレクトリの内容はiTunes, iCloudによってバックアップされる
  • tmp/
    • アプリ起動中に利用する一時ファイルを保存する
    • アプリが起動していないとき、システムによって消去される可能性がある
    • このディレクトリはiTunes, iCloudによってバックアップされない
0
2
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
2