2017-01-02 44 views
1

我有一個iPhone應用程序,我用Xamarin開發,並在HockeyApp上發佈。每當我將新版本的應用程序放到HockeyApp上,並且有人在手機上更新他們當前的安裝,他們就會丟失保存的數據。有什麼辦法可以防止這種情況發生?iOS應用程序保存更新後丟失的數據

編輯

我有讓是我分享我的插件的數據量太大的權利。這可能是問題嗎?這是我正在寫/讀數據:

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"); 

編輯

改變上面的代碼爲以下後,現在更新後仍繼續保存的數據:

// Write data: 
NSUserDefaults.StandardUserDefaults.SetString("myValue", "myKey"); 
NSUserDefaults.StandardUserDefaults.Synchronize(); 
// Read data: 
string myValue = NSUserDefaults.StandardUserDefaults.StringForKey("myKey"); 

但現在我無法與我的小部件共享數據......我如何解決這個問題,同時仍然可以與我的小部件共享數據?

+1

您的應用程序如何保存數據? 'NSUserDefaults',鑰匙串,CoreData? –

+0

NSUserDefaults。 – Darius

+0

數據是否在應用程序的不同啓動之間持續存在?還要分享一些您正在保存的數據類型的詳細信息? – Adeel

回答

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"); 
相關問題