Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Xamarin存储信息_C#_Android_Android Layout_Xamarin - Fatal编程技术网

C# Xamarin存储信息

C# Xamarin存储信息,c#,android,android-layout,xamarin,C#,Android,Android Layout,Xamarin,我正在从事一个新的基于xamarin的项目,我必须以某种方式存储事务数据,如果应用程序关闭,数据不应该丢失。所以我决定存储一个写有事务信息的文件,以便程序可以访问该文件并在需要时读取或重写信息。首先,我想创建asset.txt文件,但我发现不可能将信息写入此类文件。第二种情况是使用嵌入式文件,但我仍然无法得到它应该保存的位置,这样用户就不会无意中删除它。如果可能的话,分享你的经验或发送一篇关于这个主题的解释文章 您可以在应用程序属性中存储少量信息,如下所示: string foo = "Foo"

我正在从事一个新的基于xamarin的项目,我必须以某种方式存储事务数据,如果应用程序关闭,数据不应该丢失。所以我决定存储一个写有事务信息的文件,以便程序可以访问该文件并在需要时读取或重写信息。首先,我想创建asset.txt文件,但我发现不可能将信息写入此类文件。第二种情况是使用嵌入式文件,但我仍然无法得到它应该保存的位置,这样用户就不会无意中删除它。如果可能的话,分享你的经验或发送一篇关于这个主题的解释文章

您可以在应用程序属性中存储少量信息,如下所示:

string foo = "Foo";
Application.Current.Properties["bar"] = foo;
然后取回它们:

string foo = Application.Current.Properties["bar"] as string;

我找到了另一条路。这应该是跨平台的能力,到目前为止我只测试了Android版本

使用nuget安装

XAM.Plugins.Settings

存储值(我只使用字符串和整数)

var settings=CrossSettings.Current;
settings.AddOrUpdateValue(“键”,值);
检索值

var settings = CrossSettings.Current;
var strSettings = settings.GetValueOrDefault<string>("key", string.Empty);
var settings=CrossSettings.Current;
var strSettings=settings.GetValueOrDefault(“key”,string.Empty);
我尝试了更复杂的类型,但出现了一个错误

System.ArgumentException:不支持PreSetStruct类型的值。发生

PreSetStruct是一个带有几个字段的简单结构


我将在稍后开发iOs版本,并会让您知道它是如何工作的。

这是传统上数据库的用途。有很多关于将本地SQLite db与Xamarin应用程序结合使用的文章和示例。在我的例子中,我必须存储一个字符串是否值得实现数据库?如何将所有事务数据存储在一个字符串中?除了使用数据库外,还有其他方法可以持久化短字符串,但我不知道它们是否适用。目前,我正在将事务的一个对象(4个属性)存储为JSON字符串,并在需要时对其进行序列化/反序列化。因此,您是否只想存储具有4个属性的单个事务?您可以在Application.Current.Properties中尝试四个条目。但是,如果您需要存储多个事务,SQLite是一个不错的选择。
var settings = CrossSettings.Current;
var strSettings = settings.GetValueOrDefault<string>("key", string.Empty);