我有一个简单的Xamarin Forms应用程序。现在我有一个简单的POCO对象(例如实例或最近的推文或订单列表等)。
我该如何将此对象存储在设备本地?假设我将其序列化为JSON。
此数据有多安全?它是否是Keychains的一部分?自动备份了吗?
谢谢!
我有一个简单的Xamarin Forms应用程序。现在我有一个简单的POCO对象(例如实例或最近的推文或订单列表等)。
我该如何将此对象存储在设备本地?假设我将其序列化为JSON。
此数据有多安全?它是否是Keychains的一部分?自动备份了吗?
谢谢!
您有几个选项。
我认为您需要调查并找出哪种方法最适合您的需求。
至于安全性,这取决于您将数据放置在每个设备的位置。 Android默认情况下将应用程序数据存储在安全的应用程序文件夹中(如果您已经rooted,这并不那么安全)。 iOS有几个不同的文件夹,用于基于不同需求的数据存储。阅读更多信息:iOS Data Storage
另一个选择是Xamarin Forms设置插件。
例如,如果您需要存储用户实例,只需在存储时将其序列化为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));
}
}
编辑: 现在有一个新的解决方案。只需使用Xamarin.Essentials。
Preferences.Set(UserKey, JsonConvert.SerializeObject(value));
var user= JsonConvert.DeserializeObject<User>(Preferences.Get(UserKey, "default_value");
请使用Xamarin.Essentials
Preferences
类有助于在键/值存储中存储应用程序首选项。
要保存值:
Preferences.Set("my_key", "my_value");
获取一个值:
var myValue = Preferences.Get("my_key", "default_value");
Application.Current.Properties["SeatNumbers"] = totalSeats.Text;
await Application.Current.SavePropertiesAsync();
然后,您可以从任何其他页面(page2)简单地获取该值
var value = Application.Current.Properties["SeatNumbers"].ToString();
SeatNumbersEntry.Text = value;
Application.Current.Properties["AppNumber"] = "123"
await Application.Current.SavePropertiesAsync();
获取相同的值:
var value = Application.Current.Properties["AppNumber"];