我正在尝试为 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;
}
Best Answer-推荐答案 strong>
我还没有遇到在 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/
|