Skip to content
This repository has been archived by the owner on Jun 20, 2023. It is now read-only.

Latest commit

 

History

History
92 lines (67 loc) · 3.52 KB

3-2_FileManager.md

File metadata and controls

92 lines (67 loc) · 3.52 KB

参考 mixi-inc/iOSTraining 7.2 NSFileManager

File System Programming Guide

ファイルシステムプロ グラミングガイド

NSFileManager Class Reference

iOS のファイルシステム

filesystem_in_iOS

ファイルシステムプロ グラミングガイド から引用

path 説明
<Application_Home>/Documents/ ユーザが作り出したデータをファイルとして保存したい場合ここに保存してください。iTunes によってバックアップされます。
<Application_Home>/Library/Caches システムが再度取得可能なデータをキャッシュしておきたい場合はここに保存してください。iTunes によってバックアップされません。
<Application_Home>/tmp/ 一時的に保存しておきたいデータがればここに保存してください。必要がなくなった際にはその都度削除するようにしてください。iTunes にはバックアップされません。

Document ディレクトリパス取得

let urls = FileManager().urls(for: .documentDirectory, in: .userDomainMask)
print(urls.first)

console log

Optional(file:///Users/Username/Library/Developer/CoreSimulator/Devices/CE1017AE-5E14-488C-B0B3-B364453B0413/data/Containers/Data/Application/F47D5EB7-5271-4528-85D6-A7E85B9D13B8/Documents/)

URL ベースのパスが取得できます。シュミレータだと Mac のファイルシステムパスが表示されます。

この URL に保存したいファイル名を追加して新たな URL を生成すれば保存が可能です。

データの保存

let saveDict = [ "key1" : "value1", "key2" : "value2" ]
let fileUrl: URL ...

if NSKeyedArchiver.archiveRootObject(saveDict, toFile: fileUrl.path) {
    print("success")
} else {
    print("failed")
}

データの読み込み

if FileManager.default.fileExists(atPath: fileUrl.path) { //[1] ファイルパスが存在するかどうかを確認
    let readDict = NSKeyedUnarchiver.unarchiveObject(withFile: fileUrl.path) //[2] 保存したファイルを dictionary として生成
    print(readDict)
} else {
    print("not exist")
}

console log

Optional({
    key1 = value1;
    key2 = value2;
})

ファイルの削除

guard let fileUrl = fileURL(), FileManager.default.fileExists(atPath: fileUrl.path) else {
    print("not exist")
    return
}
do {
    try FileManager.default.removeItem(atPath: fileUrl.path)
} catch {
    print("failed")
}

問題

下図の画面を作成して、以下の仕様を満たすプログラムを作成してください。

  • save ボタンを押すと textField のテキストが保存される。
  • プロセスを切って再度プログラムを起動して read ボタンを押すと textField に保存したテキストが表示される
  • delete ボタンで保存されたテキストを削除する

practice