OStack程序员社区-中国程序员成长平台

标题: c# - 如何在 NSUserDefaults 中存储 c# 列表 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 04:34
标题: c# - 如何在 NSUserDefaults 中存储 c# 列表

我正在尝试为 NSUserDefaults 中的每个元素存储一个包含 DateTime 值和 String 值的列表。

var reminderList = new List<doubleVariableDateAndName>();
        NSDate dateNS = dateSet.Date;
        DateTime dateDT = ((DateTime)dateSet.Date).ToLocalTime();

        reminderList.Add(new doubleVariableDateAndName() { Name = nameSet.Text, DueDay = dateDT});

如果有帮助,您可以忽略代码的第 2 行和第 3 行以及我想要存储在 NSUserDefaults 中的提醒列表中的列表。

public NSUserDefaults dataBase = NSUserDefaults.StandardUserDefaults;

    public class doubleVariableDateAndName
    {
        public string Name;
        public DateTime DueDay;
    }

enter image description here

enter image description here



Best Answer-推荐答案


我还没有遇到在 NSUserDefaults 中存储对象的方法。但是我序列化和反序列化我的对象,你可以对你的列表做同样的事情。

所以我有一个 Account 对象。我将其序列化为字符串,然后存储在 NSUserDefaults 中,如下所示

public void SaveAccount(Account account)
{
    var stringAccount = JsonConvert.SerializeObject(account);
    NSUserDefaults.StandardUserDefaults.SetString(stringAccount,AccountIdentifier);
}

然后为了取回对象,我反序列化并返回它。

public Account GetAccount()
{
   var userDefaults = NSUserDefaults.StandardUserDefaults;
   var stringAccount = userDefaults.StringForKey(AccountIdentifier);
   if (!string.IsNullOrEmpty(stringAccount))
   {
      var account = JsonConvert.DeserializeObject<Models.Account>(stringAccount);
      return account;
   }

   return null;
}

我使用 Newtonsoft.Json 来处理序列化和反序列化。你可以阅读它here如果你还没有使用它。

所以为了让你的列表序列化你会做类似的事情

public void SaveList(List<doubleVariableDateAndName> reminderList)
{
    var serializedContent = JsonConvert.SerializeObject(reminderList);
    NSUserDefaults.StandardUserDefaults.SetString(serializedContent ,"yourUniqueIdentifier");
}

然后从您可以使用的商店中取回您的 list

public List<doubleVariableDateAndName> GetReminderList()
{
   var userDefaults = NSUserDefaults.StandardUserDefaults;
   var serializedContent = userDefaults.StringForKey("yourUniqueIdentifier");
   if (!string.IsNullOrEmpty(serializedContent ))
   {
      var reminderList = JsonConvert.DeserializeObject<List<doubleVariableDateAndName>>(serializedContent);
      return reminderList;
   }

   return null;
}

将函数重新格式化为最适合您的格式,但这将允许您将列表存储在 NSUserDefaults 中。

关于c# - 如何在 NSUserDefaults 中存储 c# 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51743672/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4