我有一个简单的Xamarin Forms应用程序。我现在有了一个简单的POCO对象(例如。User
实例或最新推文或订单或其他的列表)。
如何将此对象本地存储到设备中?让我们想象一下我将它序列化为JSON。
此外,这些数据有多安全?它是Keychains等的一部分吗?自动备份?
喝彩!
答案 0 :(得分:69)
你有两个选择。
我认为您必须调查并找出最符合您需求的路线。
就安全性而言,这取决于您将数据放在每台设备上的位置。 Android默认情况下将应用数据存储在安全的应用程序文件夹中(如果您已植根,则不安全)。 iOS有几个不同的文件夹,可根据不同需求进行数据存储。在此处阅读更多内容:iOS Data Storage
答案 1 :(得分:18)
另一个选项是xamarin表单设置插件https://github.com/jamesmontemagno/SettingsPlugin。如果您需要存储,例如用户实例,在读取时将其序列化为json,并在读取时反序列化。
使用原生设置管理
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));
}
}
答案 2 :(得分:5)
请使用Xamarin.Essentials
Preferences类有助于将应用程序首选项存储在键/值存储中。
要保存值:
Preferences.Set("my_key", "my_value");
要获取值:
var myValue = Preferences.Get("my_key", "default_value");
答案 3 :(得分:0)
如果它是键值(一个值)数据存储,请遵循以下代码
Application.Current.Properties["AppNumber"] = "123"
await Application.Current.SavePropertiesAsync();
获得相同的值
var value = Application.Current.Properties["AppNumber"];
答案 4 :(得分:0)
如果要存储简单值(例如字符串),请遵循此示例代码。
将“ totalSeats.Text”的值设置为“ SeatNumbers”键从第1页
Application.Current.Properties["SeatNumbers"] = totalSeats.Text;
await Application.Current.SavePropertiesAsync();
然后,您只需从任何其他页面( page2 )
中获取值即可。var value = Application.Current.Properties["SeatNumbers"].ToString();
此外,您可以将该值设置为另一个Label或Entry等。
SeatNumbersEntry.Text = value;