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 файлы, поэтому он приятный и элегантный.

Это хорошо, если вашему приложению не требуется большой объем данных, а данные просты, а структура - текучая.