NSUserDefaults.StandardUserDefaults: save y recuperar un dictionary

¿Me ayudarían ustedes? Encontré cómo save y recuperar objects simples para usarlos como configuraciones de la aplicación.

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

y más tarde puedes recuperarla así:

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

Ahora, ¿qué pasa si necesito save múltiples nombres de usuario (tantos como quiera)? ¿Y qué pasa si necesito save múltiples nombres de usuario con passwords o passhashes?

Aquí hay un ejemplo para matrices (muchas cadenas guardadas con una sola key):

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

Y un ejemplo donde un dictionary (key = valor) se mantiene con una sola key:

  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]); } 

Yo consideraría el uso de datos básicos si tiene muchos usuarios que también desea search y filtrar. Si su aplicación no es tan compleja, siempre puede serializar un dictionary en una cadena y savelo como tal en los valores pnetworkingeterminados del usuario. Una buena biblioteca para la serialization JSON (de) es SBJSON http://stig.github.com/json-framework/ .

Tuve problemas para que NSUserDefaults almacenara dictionarys. Lo que terminé haciendo es simplemente get el directory de documentos y save mi dictionary en un file cuando la aplicación termina o se va al background y luego lo carga de un file cuando la aplicación termina de cargarse. NSDictionary y NSMutableDictionary tienen methods de class que cargan o guardan de un file, y usa XML serializados, por lo que es agradable y elegante.

Esto es bueno si su aplicación no necesita una gran cantidad de datos, y los datos son simples y la estructura es fluida.