更新后iOS应用保存的数据丢失

时间:2017-01-02 18:02:42

标签: ios xamarin hockeyapp

我有一个我用Xamarin开发并在HockeyApp上发布的iPhone应用程序。每当我在HockeyApp上安装新版本的应用程序并且有人在手机上更新他们当前的安装时,他们就会丢失已保存的数据。有什么方法可以阻止这种情况吗?

修改

我有权让我与我的小部件共享数据。这可能是问题吗?这就是我写/读数据的方式:

var i=0;
angular.forEach($scope.inputs.data,function(value){
var sum=o;
var tot=sum+value.marks[i];
i++     
 };

修改

将上述代码更改为以下代码后,它现在会在更新后保留已保存的数据:

this.nsUserDefaults = new NSUserDefaults("myGroupId", NSUserDefaultsType.SuiteName);

// Write data:
this.nsUserDefaults.SetString("myValue", "myKey");
this.nsUserDefaults.Synchronize();

// Read data:
string myValue = this.nsUserDefaults.StringForKey("myKey");

但是现在我无法与我的小部件共享数据......如何在能够与我的小部件共享数据的同时解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果在调用this.nsUserDefaults.Synchronize();之前尝试读取数据,则无法获取数据。

所以,如果你这样做:

this.nsUserDefaults = new NSUserDefaults("myGroupId", NSUserDefaultsType.SuiteName);

// Read data:
string myValue = this.nsUserDefaults.StringForKey("myKey");

您无法获取数据。但是如果你在读取之前调用Synchronize()方法,你将获得数据:

this.nsUserDefaults = new NSUserDefaults("myGroupId", NSUserDefaultsType.SuiteName);
this.nsUserDefaults.Synchronize();

// Read data:
string myValue = this.nsUserDefaults.StringForKey("myKey");