AndroidとiOSの違い(データの永続化)

公開日:2019-05-20
最終更新:2019-05-20

アプリにデータを保持しておきたい。そんな時にはこれを使おう。

Android iOS
SharedPreferences UserDefaults

両者とも Key-Value の形でデータを保持していて、例えばInt型のデータを保存する場合は次のようになってる。

// Java  
editor.putInt("Key", value);  
// Swift  
userDefault.set(value, forKey : "Key")  

データ永続化の方法は他にもあるけど、一番簡単だしよく使うのでは。

インスタンス化

使用する場合には、まずはインスタンス化から。

SharedPreferences

ContextのgetSharedPreferencesメソッドを使ってインスタンスを取得。

// Java  
SharedPreferences sharedPreferences = getSharedPreferences("設定データの名前", ファイルのモード);  
// Koltin  
val sharedPreferences = getSharedPreferences("設定データの名前", ファイルのモード)  

UserDefaults

// Swift  
let userDefaults = UserDefaults.standard  

値の書き込み

値を書き込む際、SharedPreferencesはちょっと面倒。
1.SharedPreferences.Editorを取得
2.Editorの各種putメソッドを使い値を渡す
3.applyメソッド(もしくは commitメソッド)で書き込む
といった手順が必要。

SharedPreferences

SharedPreferences.Editorには次のputメソッドが用意されている。
つまり、定義されているメソッドで渡せる型しか使用でない。これがちょっとヤダ。

メソッド
putInt Int
putLong Long
putFloat Float
putBoolean Boolean
putString String
putStringSet Set<String>
// Java  
SharedPreferences sharedPreferences = getSharedPreferences("設定データの名前", ファイルのモード);  
SharedPreferences.Editor editor = sharedPreferences.edit();  
editor.putInt("Key", value);  
editor.apply();  
// Koltin  
val sharedPreferences = getSharedPreferences("設定データの名前", ファイルのモード)  
val editor = sharedPreferences.edit()  
editor.putInt("Key", value)  
editor.apply()  

apply()は非同期での書き込みで、commit()は同期での書き込み。

UserDefaults

// Swift  
let userDefaults = UserDefaults.standard  
userDefaults.setValue(value, forKey : "Key")  

ワオ、簡単!

値の読み込み

値の読み込みは、保存時に使用したKeyを使って読み出す。
しかし、保持した値の型に合わせたメソッドを使って読みださないといけないので、ちゃんと覚えておかないといけない。
Intの値を保存したなら、Intの値を読みだすメソッドを使わないとダメ。

SharedPreferences

値の保存時に使用したEditorを使用する必要はなく、SharedPreferencesのgetメソッドを使う。
getメソッドの第二引数にはデフォルト値を指定する必要がある。
デフォルト値は、保存されている値がnullだった場合に返す値で、nullも指定できる。

メソッド 取得出来る型
getInt Int
getLong Long
getFloat Float
getBoolean Boolean
getString String
getStringSet Set<String>
// Java  
SharedPreferences sharedPreferences = getSharedPreferences("設定データの名前", ファイルのモード);  
int value = sharedPreferences.getInt("Key", default);  
// Koltin  
val sharedPreferences = getSharedPreferences("設定データの名前", ファイルのモード)  
val value = sharedPreferences.getInt("Key", default)  

UserDefaults

UserDefaultsにはデフォルト値の指定はない。

メソッド 取得出来る型
integer Int
float Float
double Double
bool Bool
array [Any]
url URL
data Data
object Any
dictionary [String : Any]

UserDefaultsはいろいろな型を扱う事が出来る。
Anyが使えるし、Arrayだって入れてもいい。便利!

// Swift  
let userDefaults = UserDefaults.standard  
let value = userDefaults.integer(forKey : "Key")  
記事が少しでもいいなと思ったらクラップを送ってみよう!
1
+1
偉大な先人が切り開いた道だろう。しかし、それでも自分は初めて通る道なのだ。そして、これは自分の為に記していくのだ。

よく一緒に読まれている記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする