c# - 如何在 NSUserDefaults 中存储 c# 列表
<p><p>我正在尝试为 NSUserDefaults 中的每个元素存储一个包含 DateTime 值和 String 值的列表。</p>
<pre><code>var reminderList = new List<doubleVariableDateAndName>();
NSDate dateNS = dateSet.Date;
DateTime dateDT = ((DateTime)dateSet.Date).ToLocalTime();
reminderList.Add(new doubleVariableDateAndName() { Name = nameSet.Text, DueDay = dateDT});
</code></pre>
<p>如果有帮助,您可以忽略代码的第 2 行和第 3 行以及我想要存储在 NSUserDefaults 中的提醒列表中的列表。</p>
<pre><code>public NSUserDefaults dataBase = NSUserDefaults.StandardUserDefaults;
public class doubleVariableDateAndName
{
public string Name;
public DateTime DueDay;
}
</code></pre>
<p> <a href="/image/IfM2Z.png" rel="noreferrer noopener nofollow"><img src="/image/IfM2Z.png" alt="enter image description here"/></a> </p>
<p> <a href="/image/Vjj9N.png" rel="noreferrer noopener nofollow"><img src="/image/Vjj9N.png" alt="enter image description here"/></a> </p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>我还没有遇到在 NSUserDefaults 中存储对象的方法。但是我序列化和反序列化我的对象,你可以对你的列表做同样的事情。 </p>
<p>所以我有一个 Account 对象。我将其序列化为字符串,然后存储在 NSUserDefaults 中,如下所示</p>
<pre><code>public void SaveAccount(Account account)
{
var stringAccount = JsonConvert.SerializeObject(account);
NSUserDefaults.StandardUserDefaults.SetString(stringAccount,AccountIdentifier);
}
</code></pre>
<p>然后为了取回对象,我反序列化并返回它。</p>
<pre><code>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;
}
</code></pre>
<p>我使用 Newtonsoft.Json 来处理序列化和反序列化。你可以阅读它<a href="https://www.newtonsoft.com/json/help/html/Introduction.htm" rel="noreferrer noopener nofollow">here</a>如果你还没有使用它。</p>
<p>所以为了让你的列表序列化你会做类似的事情</p>
<pre><code>public void SaveList(List<doubleVariableDateAndName> reminderList)
{
var serializedContent = JsonConvert.SerializeObject(reminderList);
NSUserDefaults.StandardUserDefaults.SetString(serializedContent ,"yourUniqueIdentifier");
}
</code></pre>
<p>然后从您可以使用的商店中取回您的 list </p>
<pre><code>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;
}
</code></pre>
<p>将函数重新格式化为最适合您的格式,但这将允许您将列表存储在 NSUserDefaults 中。</p></p>
<p style="font-size: 20px;">关于c# - 如何在 NSUserDefaults 中存储 c# 列表,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/51743672/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/51743672/
</a>
</p>
页:
[1]