如何在我的Xamarin Forms应用程序上本地保存一些用户数据?

Pur*_*ome 46 storage xamarin xamarin.forms

我有一个简单的Xamarin Forms应用程序.我现在有了一个简单的POCO对象(例如,User实例或最新推文或订单或其他的列表).

如何将此对象本地存储到设备中?让我们想象一下我将其序列化为JSON.

此外,这些数据有多安全?它是Keychains等的一部分吗?自动备份?

干杯!

Wil*_*ker 75

你有几个选择.

  1. SQLite的.此选项是跨平台的,如果您有大量数据,则可以正常运行.您还获得了事务支持和异步支持的额外奖励.编辑:过去我建议使用SQLite.Net-PCL.由于涉及Android 7.0支持的问题(以及显而易见的支持日落),我现在建议使用最初分叉的项目:sqlite-net
  2. 本地存储.有一个很棒的nuget支持跨平台存储.有关更多信息,请参阅PCLStorage
  3. 还有Application.Current.Properties在Xamarin.Forms实施,使数据的简单的键-值对.

我想你必须调查并找出最符合你需求的路线.

就安全性而言,这取决于您将数据放在每台设备上的位置.Android默认情况下将应用数据存储在安全的应用程序文件夹中(如果您已植根,则不安全).iOS有几个不同的文件夹,可根据不同需求进行数据存储.在此处阅读更多内容:iOS数据存储

  • 还要记住,Application.Current.Properties用于暂停 - 恢复方案.应用程序重新启动时,该值通常不会保留. (5认同)

puk*_*uko 19

另一种选择是xamarin表单设置插件https://github.com/jamesmontemagno/SettingsPlugin.如果你需要存储例如用户实例,只需在存储时将其序列化为json,并在读取时将其反序列化.

使用本机设置管理

  • Android:SharedPreferences
  • iOS:NSUserDefaults
  • Windows Phone:IsolatedStorageSettings
  • Windows RT/UWP:ApplicationDataContainer

      public User CurrentUser
      {
         get
         {
            User user = null;
            var serializedUser = CrossSettings.Current.GetValueOrDefault<string>(UserKey);
            if (serializedUser != null)
            {
               user = JsonConvert.DeserializeObject<User>(serializedUser);
            }
    
            return user;
         }
         set
         {
            CrossSettings.Current.AddOrUpdateValue(UserKey, JsonConvert.SerializeObject(value));
         }
      }
    
    Run Code Online (Sandbox Code Playgroud)


chu*_*han 6

请用 Xamarin.Essentials

Preferences类有助于将应用程序首选项存储在键/值存储中。

要保存值:

Preferences.Set("my_key", "my_value");
Run Code Online (Sandbox Code Playgroud)

获得价值:

var myValue = Preferences.Get("my_key", "default_value");
Run Code Online (Sandbox Code Playgroud)