【ISSUE】NSFileManagerでAPP保存領域のデータを操作する

0

2024年12月23日 17:28

##はじめに
アプリを作成していく上で追加データとかを保存する領域がアプリごとに振り当てられているのでそこにデータを保存してみる。

##ディレクトリ構成
MyApp.app/
┠ Document/
│  ┗ Inbox/
┠ Library/
│  ┠ Caches/
│  ┗ Preferenses/
┗ tmp/

##ディレクトリ別アクセス権

ディレクトリ読み込み書き込みiTunesによるバックアップ備考
MyApp.app×O×
DocumentOOOiTunes経由で閲覧可能
InboxOO書き込みはできないが削除は可能
LibraryOOCacheはバックアップされない
CacheOO×システムによる自動削除あり
tmpOO×システムに自動削除されない

##フォルダのチェック・作成
/Document以下にフォルダを作成。フォルダがすでにある場合は作成しないようにしてある。
※/Document以外にもいろいろなフォルダに書き込むことができるので以下を参照してみてください

Qiita:: 今こそ復習したい、iOSアプリのディレクトリ構成
http://qiita.com/tototti/items/8646405f47cc56a59722
Apple:: File System Programming Guide
File System Programming Guide: File System Basics

img

fileManager.fileExistsAtPath(path, isDirectory: &isDir)でフォルダの有無を確認しtruefalseの結果をisDirに格納します。

isDirfalseであれば/Documentもしくは/Libraryディレクトリにimagesフォルダを作成します。

##ファイルの書き込み
img

try! fileObject!.writeToFile("\(path)/\(fileName)", atomically: true, encoding: NSUTF8StringEncoding)を実行したと同時に選択したpathに"hogehoge"と入力された"tes1.txt"というテキストファイルが生成されます。

##ファイルの移動・名前変更
img
これを実行することで/path/tes1.txt --> /path/tes.txtに変更されます。

##ファイルの削除
img

##ファイルのコピー
img

##ファイルの上書き
img

##注意

  • Documentsフォルダはユーザー作成のデータのみ。

ユーザ生成のデータではないファイルや、キャッシュデータなどは置かないように。
どうやら、Appleのガイドラインに違反するらしく申請してもリジェクトされます。

  • 再ダウンロード出来るデータ、再作成できるデータは/Library/Cachesに置く。
  • tempファイルなどは /tmp に置く。
  • バックアップが不要なファイルは [do not back up] 属性を付けて、無駄にバックアップ容量を取らせない。

##おわり
CoreDataとかでデータを保存するよりも、うんと楽になりそうです。
便利なライブラリとかextensionも紹介していく予定なのでおたのしみに
[cv:issue_marketplace_engineer]

0

診断を受けるとあなたの現在の業務委託単価を算出します。今後副業やフリーランスで単価を交渉する際の参考になります。また次の単価レンジに到達するためのヒントも確認できます。