NSUserDefaults.StandardUserDefaults - 保存和检索字典

时间:2011-10-05 15:14:22

标签: c# ios xamarin.ios monodevelop nsuserdefaults

你能帮帮我吗?我找到了如何保存和检索简单对象以将其用作应用程序设置。

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 个答案:

答案 0 :(得分:12)

以下是数组的示例(许多字符串都使用单个键保存):

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

使用单个密钥保存字典(key = value)的示例:

        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 :(得分:1)

如果你有很多想要搜索和过滤的用户,我会考虑使用核心数据。如果您的应用程序不那么复杂,您始终可以将字典序列化为字符串,并将其保存为用户默认值。一个很好的JSON(de)序列化库是SBJSON http://stig.github.com/json-framework/

答案 2 :(得分:1)

我无法让NSUserDefaults存储词典。我最终做的,只是获取Documents目录,并在应用程序终止或转到后台时将我的字典保存到文件,然后在应用程序完成加载时从文件中加载它。 NSDictionaryNSMutableDictionary具有从文件加载或保存的类方法 - 它使用序列化的XML,因此它非常优雅。

如果您的应用不需要大量数据,并且数据简单且结构流畅,那么这很好。