iOSにおけるデータ保存の方法まとめ

めっきり冷え込んだこのところ、温泉が恋しくてたまらないエンジニアSです。

今回はiOSアプリ開発者が意識すべき、データの保存方法について解説します。

データ保存できる3つの領域


アプリ内のデータは、アプリが終了すると消えてしまいます。
次回立ち上げ時も使いたいデータは、フラッシュドライブに保存しておく必要があります。
iOSでは、フラッシュドライブは大きく分けて3つの領域に分けて使われます。

【アプリ領域】
アプリが自由に使うことが出来る領域です。
アプリごとに割り当てられていて他のアプリの領域を参照することは出来ません。
アプリを削除すると、領域のデータはすべて失われます。

【OS 領域】
OS本体のファイルやアプリなど、OSが使用するデータが保存されている領域です。
基本的に基本的にアプリから参照することは出来ません。

【共有領域】
メディアライブラリ(写真、ビデオ、音楽)やイベント、連絡先など、すべてのアプリから参照することができる領域です。
アプリ使用中に「アプリがカメラロールへのアクセスを求めています」と出るときは、この領域のアクセスを試みています。



このうち、アプリ開発者がよく使うのは、「アプリ領域」です。
この領域にデータ保存する方法には、主に次の4つがあります。


データ保存の方法4つ



①NSUserDefaults
アプリ固有の設定値を保存することに特化したライブラリです。
たとえば、ゲームアプリで「初回のみチュートリアルを見せたい」というときは、
「チュートリアルを見たか否か」のフラグを持たせて、UserDefaultに保存します。
その他、アプリ内だけで持たせるユーザーのプロフィール情報(氏名や年齢など)も、ここに保存することが多いです。

②オブジェクトアーカイブ
写真や動画など、①では保存できないオブジェクトファイルをバイナリ化して保存するために使われます。
アーカイブしたデータは、アプリ内のDocumentsフォルダ内に保存するのが通例です。

③プロパティリスト
プロパティリストと呼ばれる方式でデータを永続化する
これは、配列またはディレクトリの形で保存される.plist形式のファイルです。
たとえば都道府県名の一覧など、プログラムから変更する必要がなく、
かつソースコード内に記述するには、文字量が多いものが適しています。

④Core Data
SQLiteというリレーショナルデータベースの仕組みを使用するためのフレームワーク。
RPGゲームのアイテムやモンスターの情報など、
数百件以上の大量データを扱うときに適しています。
データ容量が膨大な場合、アプリ立ち上げ後にサーバーからデータをダウンロードし、
アプリ内のCore Dataに展開する、という手法が使われることもあります。


それぞれの特性を理解し、使い分ければ百戦危うからず、です。


トンガルマンWebサイト
https://tongullman.co.jp/index.php
facebook
https://www.facebook.com/Tongullman

0 件のコメント:

コメントを投稿