【问题标题】:Export / Import Xamarin.Essentials Preferences导出/导入 Xamarin.Essentials 首选项
【发布时间】:2020-01-17 19:53:08
【问题描述】:

我正在寻找一种快速/简单的方法来导入和导出 Xamarin.Essentials 公开的 Preferences 对象。有什么建议吗?

【问题讨论】:

标签: xamarin.forms xamarin.essentials


【解决方案1】:

根据您的描述,您想在偏好中保存数据并从偏好中获取数据,对吗?如果是,请查看以下代码:

using Xamarin.Essentials;
  private void Btn1_Clicked(object sender, EventArgs e)
    {
        Preferences.Set("key1", "this is test");
    }

    private void Btn2_Clicked(object sender, EventArgs e)
    {
        var myValue = Preferences.Get("key1","");
    }

有关 Xamarin.Essentials 的更多详细信息:首选项,请查看以下文章:

https://docs.microsoft.com/en-us/xamarin/essentials/preferences?tabs=android

https://www.c-sharpcorner.com/article/xamarin-forms-application-preferences-using-xamarin-essentials/

更新:

如果你想在首选项中保存所有内容,我建议你可以使用 Newtonsoft.Json 序列化你想要保存的数据和反序列化你想要获取的数据。

首先,通过 Nuget 包安装 Newtonsoft.Json,然后这样做:

public partial class Page13 : ContentPage
{
   public List<person> persons { get; set; }
    public Page13()
    {
        InitializeComponent();
        persons = new List<person>()
        {
            new person(){username="cherry",age=12},
            new person(){username="barry",age=14}
        };

    }

    private void Btn1_Clicked(object sender, EventArgs e)
    {
        string list = Newtonsoft.Json.JsonConvert.SerializeObject(persons);
        Preferences.Set("key1", list);
    }

    private void Btn2_Clicked(object sender, EventArgs e)
    {
        var myValue = Newtonsoft.Json.JsonConvert.DeserializeObject<List<person>>(Preferences.Get("key1", "")) ;
    }    
}


public class person
{
    public string username { get; set; }
    public int age { get; set; }
}

我用List做例子,但是你可以将evertthing对象序列化为字符串,然后将这个字符串保存在Preference中,反序列化字符串到对象中获取数据。

【讨论】:

  • 这是不正确的。我想将我保存的所有内容导出到首选项中,以便可以将其保存到驱动器中,然后在将来重新导入到首选项中。这将用于用户想要以完全相同的配置建立我的应用程序的另一个实例的情况。
  • @George,您说要保存首选项中的所有内容,如果是这样,我建议您可以使用 Newtonsoft 序列化要保存的数据和反序列化要获取的数据.Json,请看我的更新。如果我的回复对您有帮助,请记得将我的回复标记为答案,谢谢。
  • 是的,这是最后的手段。我一直在寻找更具动态性的东西,这样当我在偏好中添加新值时,它会自动包含在导入/导出中。我将研究我今天的想法,如果可行,我会在此发布。
  • @GeorgeMCeaserJr,如果您对此有一个解决方案,请在这里分享您的方式,谢谢。
  • @CherryBu - 我希望 Xamarin Essentials 首选项公开了一个密钥集合。这样就可以很容易地遍历首选项中的所有条目,将它们序列化为 json 并使该字符串可以保存。不幸的是,首选项类没有公开密钥集合。我不得不在我的代码中手动实现它。我相信公开一组键将是对首选项类的一个很好的补充,并使导入导出功能易于实现。 :)
【解决方案2】:

所以我无法找到一种内置的方法来做到这一点。我必须在我的应用程序中手动编写代码来检查我所有的偏好,将它们序列化,然后它们将字符串写入磁盘。同样对于导入,我必须采用序列化字符串,重新序列化它,然后手动将值放回我的首选项中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    • 2012-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多