【问题标题】:How can I store lists in Xamarin Forms?如何在 Xamarin Forms 中存储列表?
【发布时间】:2019-02-27 10:25:07
【问题描述】:

有没有办法使用 Xamarin Forms 本地存储列表?

【问题讨论】:

标签: c# xamarin xamarin.forms xamarin.android xamarin.ios


【解决方案1】:

Xamarin 设置插件已过时且不再维护。它的功能已被整合到 Xamarin.Essentials 中,建议继续使用。

  1. 添加Newtonsoft.Json NuGet PackageXamarin.Essentials NuGet Package

  2. 利用Newtonsoft.Json.JsonConvert 序列化/反序列化List<T> 到/从string 并使用Xamarin.Essentials.Preferences 保存/检索它

using System;
using Newtonsoft.Json;
using Xamarin.Essentials;

namespace YourNamespace
{
    static class Preferences
    {
        public static List<string> SavedList
        {
            get
            {
                var savedList = Deserialize<List<string>>(Preferences.Get(nameof(SavedList), null));
                return savedList ?? new List<string>();
            }
            set
            {
                var serializedList = Serialize(value);
                Preferences.Set(nameof(SavedList), serializedList);
            }
        }

        static T Deserialize<T>(string serializedObject) => JsonConvert.DeserializeObject<T>(serializedObject);

        static string Serialize<T>(T objectToSerialize) => JsonConvert.SerializeObject(objectToSerialize);
    }
}
  1. 在代码中的任何位置引用 Preferences.SavedList
void AddToList(string text)
{
    var savedList = new List<string>(Preferences.SavedList);

    savedList.Add(text);

    Preferences.SavedList = savedList;
}

【讨论】:

    【解决方案2】:

    在设置插件中,您可以以键值方式存储,因此您不能直接存储列表。一种解决方法是,您可以将列表序列化为 json 字符串,然后可以使用密钥存储它。 当您需要返回列表时,您可以使用密钥获取该 json 字符串并将其反序列化为原始格式。

    【讨论】:

      猜你喜欢
      • 2019-11-08
      • 2022-11-18
      • 2019-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-24
      • 2016-01-18
      • 1970-01-01
      相关资源
      最近更新 更多