NSUserDefaults.StandardUserDefaults - сохранение и извлечение словаря
Вы, ребята, поможете мне? Я нашел, как сохранять и извлекать простые объекты, чтобы использовать их в качестве настроек приложения.
NSUserDefaults.StandardUserDefaults.SetString("testUser","username");
NSUserDefaults.StandardUserDefaults.Init(); //Although it strange that you have to call this method to actually save your stuff
а затем вы можете получить его так:
var username = NSUserDefaults.StandardUserDefaults.StringForKey("username");
Теперь, если мне нужно сохранить несколько имен пользователей (сколько мне нужно)?
И что, если мне нужно сохранить несколько имен пользователей с паролями или паролями?
Ответы
Ответ 1
Вот пример массивов (много строк, хранящихся с одним ключом):
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]);
}
Ответ 2
Я бы рассмотрел использование основных данных, если у вас есть много пользователей, которых вы также хотите искать и фильтровать. Если ваше приложение не так сложно, вы всегда можете сериализовать словарь в строку и сохранить его как таковой в настройках по умолчанию. Хорошей библиотекой для сериализации JSON (de) является SBJSON http://stig.github.com/json-framework/.
Ответ 3
Мне не удалось получить NSUserDefaults
для хранения словарей. То, что я закончил, - это просто получить каталог "Документы" и сохранить мой словарь в файле, когда приложение завершает работу или идет в фоновый режим, а затем загружает его из файла, когда приложение заканчивает загрузку. NSDictionary
и NSMutableDictionary
имеют методы класса, которые загружают или сохраняют из файла - и он использует сериализованные XML файлы, поэтому он приятный и элегантный.
Это хорошо, если вашему приложению не требуется большой объем данных, а данные просты, а структура - текучая.