NSUserDefaults.StandardUserDefaults - сохранение и получение словаря - PullRequest
11 голосов
/ 05 октября 2011

Не могли бы вы, ребята, помочь мне?Я нашел, как сохранять и извлекать простые объекты, чтобы использовать их в качестве настроек приложения.

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");

Теперь, что если мне нужносохранить несколько имен пользователей (столько, сколько я хочу)?А что если мне нужно сохранить несколько имен пользователей с паролями или паролями?

Ответы [ 3 ]

12 голосов
/ 06 октября 2011

Вот пример для массивов (многие строки хранятся с одним ключом):

        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 голос
/ 10 октября 2011

У меня были проблемы с получением NSUserDefaults для хранения словарей. В итоге я просто получил каталог Documents и сохранил мой словарь в файл, когда приложение завершает работу или переходит в фоновый режим, а затем загружаю его из файла, когда приложение заканчивает загрузку. NSDictionary и NSMutableDictionary имеют методы класса, которые загружают или сохраняют из файла - и он использует сериализованные XML, так что это красиво и элегантно.

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

1 голос
/ 05 октября 2011

Я бы подумал об использовании основных данных, если у вас много пользователей, которых вы также хотите найти и отфильтровать.Если ваше приложение не так сложно, вы всегда можете сериализовать словарь в строку и сохранить его как таковой по умолчанию.Хорошей библиотекой для сериализации JSON (de) является SBJSON http://stig.github.com/json-framework/.

...