【问题标题】:Xamarin Essentials Save Object DetailsXamarin Essentials 保存对象详细信息
【发布时间】:2020-09-15 18:58:33
【问题描述】:

我正在寻找一种将详细信息列表保存到 Xamarin.Essentials.Preferences 中的好方法。

基本上是这样的

<Item>
    <Name>Toast</Name>
    <Weight>0.5oz</Weight>
    <Quantity>4</Quantity>
</Item>

我想过做一些 xml 序列化,但我不确定这是最好的方法。

此列表将少于 500 个项目,每个项目最多有 6 个属性,名称、重量、数量、ImageRefPath 等。

任何人有任何建议和/或存储这个的好方法的例子吗?

Items 集合中不存在的内容是:

没有二进制数据。 没有图像。 没有斑点。

【问题讨论】:

  • 使用 SQLite。这不是 Preferences 的设计目的
  • 我希望避免像 SQL lite 这样的小型应用程序依赖...
  • 然后将其序列化为文件
  • @Jason,我昨天和今天早上都在调查。由于反射的限制,显然序列化在 IOS 上有问题?太好了……这就是我现在在这个过程中所处的位置。寻找可靠的序列化机制。
  • 我多年来一直在 iOS 项目中使用 Newtonsoft,没有任何问题。我建议您实际尝试一下,看看您是否有任何问题,而不是担心可能出现的理论问题。

标签: .net xamarin mobile xamarin.essentials


【解决方案1】:

也许您可以尝试将项目转换为 json 字符串。然后将其保存到 Xamarin.Essentials.Preferences。

例如,先定义一个模型:

public class MyItem
{
    public string Name { get; set; }
    public string Weight{ get; set; }
    public string Quantity{get;set;}
    public string ImageRefPath{get;set;}
    ...
}

//convert the items data to json string and save
ObservableCollection<MyItem> ItemList;
string json = JsonConvert.SerializeObject(ItemList);
Xamarin.Essentials.Preferences.Set("list", json);

//get the json string then convert to the List<MyItem>.
string json = Xamarin.Essentials.Preferences.Get("list","");
ObservableCollection<MyItem> items = JsonConvert.DeserializeObject<ObservableCollection<MyItem>>(json );

【讨论】:

  • 我一直在考虑这样的事情。然而,我越是深入研究 JSON 序列化,或者显然是任何序列化,IOS 对反射任务有一些限制。那么显然IOS上的序列化不起作用?寻找跨平台稳定的其他选项。
  • 我的ios没有任何问题。它对我有用。你可以试试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-18
  • 2020-08-17
  • 2017-03-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多