2011-10-05 17 views
11

私を助けてくれますか?簡単なオブジェクトを保存して取得してアプリの設定として使用する方法を見つけました。NSUserDefaults.StandardUserDefaults - 辞書の保存と検索

NSUserDefaults.StandardUserDefaults.SetString("testUser","username"); 
NSUserDefaults.StandardUserDefaults.Init(); //Although it's strange that you have to call this method to actually save your stuff 

以降あなたはそのようにそれを取得することができます。

var username = NSUserDefaults.StandardUserDefaults.StringForKey("username"); 

今、私は(私が好きな多くのように)複数のユーザ名を保存するために何が必要か? パスワードやパスハッシュで複数のユーザー名を保存する必要がある場合はどうすればよいですか?

答えて

12

ここで(多くの文字列は、単一の鍵で維持)アレイの一例は次のとおり

 NSUserDefaults.StandardUserDefaults ["array"] = NSArray.FromStrings ("a", "b", "c"); 
     foreach (string s in NSUserDefaults.StandardUserDefaults.StringArrayForKey ("array")) { 
      Console.WriteLine (s); 
     } 

と辞書(キー=値)を単一のキーを用いて維持される例:

 NSDictionary dict = NSDictionary.FromObjectsAndKeys (new object[] { "user1", "user2" }, new object[] { "123", "abc" }); 
     NSString key = new NSString ("dict"); 
     NSUserDefaults.StandardUserDefaults.SetValueForKey (dict, key); 
     NSDictionary d2 = NSUserDefaults.StandardUserDefaults.DictionaryForKey (key); 
     for (int i = 0; i < d2.Count; i++) { 
      Console.WriteLine ("{0} : {1}", d2.Keys [i], d2.Values [i]); 
     } 
1

検索したいユーザーが多い場合は、コアデータを使用することを検討します。あなたのアプリがそれほど複雑でない場合は、辞書を文字列にシリアル化し、ユーザーのデフォルトでそれを保存することができます。 JSON(de)シリアライゼーション用の優れたライブラリはSBJSON http://stig.github.com/json-framework/です。

+0

NSObject.FromObject()を使用してNSObjectにオブジェクトを変換することはできません...ヌルを返します... – Agzam

+0

sbjsonを使用していますか?その場合は、SBJSON.hをインポートできます。あなたの辞書には、新しいメソッドjsonRepresentationがあり、それはあなたにシリアライズされたStringを与えます。この文字列を保存することができます。 Stringをuserdefaultsから取得した場合は、JSONValueを呼び出して辞書を返します。 – huesforalice

+0

いいえNSJsonSerialization.Serializeを使用しようとしていますが、例外がスローされます。私はMonoTouchプロジェクトでobjective-cライブラリを利用する方法をまだ学習していません...今すぐに持っているようです – Agzam

1

NSUserDefaults辞書の保存に問題がありました。私がやったことは、単にDocumentsディレクトリを取得し、アプリケーションが終了またはバックグラウンドに行くときにファイルに私の辞書を保存し、アプリケーションの読み込みが完了したときにファイルから読み込むことです。 NSDictionaryNSMutableDictionaryには、ファイルから読み込んだり保存したりするクラスメソッドがあり、シリアライズされたXMLを使用しているので、素敵でエレガントです。

これは、アプリが大量のデータを必要とせず、データがシンプルで構造が流動的である場合に適しています。