You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Jun 20, 2023. It is now read-only.
TODOアプリを作ってみようシリーズの第3回目の演習課題その2です。
内容
#3 に引き続き、この回ではTODOの永続化を行います。
目的
教材
スタート地点
3のゴール地点である、ブランチ delete-todo からブランチを切ってから始めてください。
ゴール地点
ブランチ write-to-userdefauls にチェックアウトすると回答を見ることができます。
アプリの仕様
実装の方針
永続化の仕組みにはローカルDB、ファイルシステム、UserDefaults、サーバーに保存などのやり方が幾つかあります。それぞれの方法について一長一短ありますが、ここでは最も手軽に利用することのできる、NSUserDefualtsを利用します。
初期値の削除
今まで与えていた初期値を与えないようにします。
TODOを新規追加したときにNSUserDefaultsに保存する 2962ad0
UserDefualtsに保存を行うときは、保存したいオブジェクトとユニークなキーを指定して書き込みを行います。(
- setObject:forKey:
を用います)また
- setObject:forKey:
を行ってもすぐにはファイルへの書き込みが行われないので、- synchronize
を読んで書き込む必要があります。NSUserDefaultsの実体はplistファイルとして端末に保存され、アプリの起動時にメモリ上に展開されます。
シミュレータの場合は以下のディレクトリ
以下にある
というファイルがそれに該当します。MacのQuickLookやplutilコマンドでその中身を覗き見ることができます。
フォルダが探しにくい場合は
viewDidLoad
に以下のようなログを仕込むとログにディレクトリが表示されます。plutilコマンド
property list (plist)を扱うためのユーティリティコマンドです。plistの中身を出力したい場合は
で出力することができます。
アプリ起動時にUserDefaultsに書き込まれた内容を読み込む c78f1d7
アプリの起動時にデータを読み込んでセットします。
NSUserDefaultsからの読み込みは
- objectForKey:
を用います。読み込みのタイミングはViewControllerの初期化時が良いでしょう。
TODO削除時にNSUserDefaultsからデータを削除する c179e87
#3 で実装した削除を行ったときに、永続化しているデータの更新を行います。
UserDefaultsを更新する場合は、上書きを行えば削除することができます。
うっかり実装漏れになってしまいそうな点ですが、実際のアプリケーションを作る際は要注意ポイントの一つです。
The text was updated successfully, but these errors were encountered: