iOSでアプリケーションの設定値などを永続的に保存するために使われる方法のひとつにNSUserDefaultsがあります。iOSには他にもCoreDataやファイルとして保存することができますがNSUserDefaultsはその中でも最も簡単な方法でしょう。
文字列をNSUserDefaultsへ保存する
var userDefault = NSUserDefaults.StandardUserDefaults; userDefault.SetString("ほげほげ", "string-data"); userDefault.Synchronize();
文字列をNSUserDefaultsから取得する
var userDefault = NSUserDefaults.StandardUserDefaults; var value = userDefault.StringForKey("string-data"); Debug.WriteLine(string.Format("value: {0}", value)); 出力: 2014-10-20 10:30:39.792 App[895:21665] value: ほげほげ
Dictionary(辞書)をNSUserDefaultsへ保存する
NSDictionary型のオブジェクトをNSUserDefaultsへ保存する方法を紹介します。
// 保存するDictionaryを作成する var dictionary = new NSMutableDictionary(); dictionary.SetValueForKey(new NSString("だる太郎"), new NSString("name")); dictionary.SetValueForKey(new NSString("36"), new NSString("age")); // NSUserDefaultsへDictionaryを保存する var userDefault = NSUserDefaults.StandardUserDefaults; userDefault.SetValueForKey(dictionary, new NSString("dict-data")); userDefault.Synchronize();
追記:「Xamarin.iOSでDictionary<TK, TV>型からNSDictionary型オブジェクトへ変換する - 酢ろぐ!」の方法があることが分かったので、Xamarin.iOSではこちらの方法を利用した方が楽かもしれません*1。
// 保存するDictionaryを作成する var dict = new System.Collections.Generic.Dictionary<string, object>(); dict["aaa"] = "aaa"; dict["bbb"] = new NSString("bbb"); dict["ccc"] = 1; dict["ddd"] = 393.9f; var dictionary = NSDictionary.FromObjectsAndKeys( dict.Keys.Cast<object>().ToArray(), dict.Values.Cast<object>().ToArray()); // NSUserDefaultsへDictionaryを保存する var userDefault = NSUserDefaults.StandardUserDefaults; userDefault.SetValueForKey(dictionary, new NSString("dict-data")); userDefault.Synchronize();
Dictionary(辞書)をNSUserDefaultsから取得する
var dict = userDefault.DictionaryForKey(new NSString("dict-data")); var name = dict["name"].ToString(); var age = ((NSNumber)dict["age"]).Int32Value; Debug.WriteLine( string.Format("name:{0} age:{1}", name, age)); 出力: name:だる太郎 age:36
Array(配列)をNSUserDefaultsへ保存する
// 保存するArrayを作成する var array = new NSMutableArray(); array.Add(new NSString("item1")); array.Add(new NSString("item2")); array.Add(new NSString("item3")); array.Add(new NSString("item4")); // NSUserDefaultsへArrayを保存する var userDefault = NSUserDefaults.StandardUserDefaults; userDefault.SetValueForKey(array, new NSString("array-data")); userDefault.Synchronize();
Array(配列)をNSUserDefaultsから取得する
var userDefault = NSUserDefaults.StandardUserDefaults; var arrayData = userDefault.ArrayForKey("array-data"); foreach (var item in arrayData) { Debug.WriteLine(item.ToString()); } 2014-10-20 10:49:36.818 App[1144:32632] item1 2014-10-20 10:49:36.821 App[1144:32632] item2 2014-10-20 10:49:36.823 App[1144:32632] item3 2014-10-20 10:49:36.825 App[1144:32632] item4
参考
- 作者: 國居貴浩
- 出版社/メーカー: 秀和システム
- 発売日: 2013/10/31
- メディア: 単行本
- この商品を含むブログ (3件) を見る
関連記事
Xamarin.iOSを使ってアプリ開発する際に逆引きとしてお使いください。
*1:……と書いたものの、適切にネイティブ側の型を意識しないといけない場合は前述の方法を検討した方が良いかも