2017-01-02 9 views
1

私はXamarinで開発したiPhoneアプリをHockeyAppに公開しています。私がHockeyAppに新しいバージョンのアプリを置き、誰かが自分の電話に現在のインストールを更新すると、彼らは保存されたデータを失う。これを防ぐ方法はありますか?アップデート後にiOSアプリの保存データが失われる

EDIT

私は私があまりにも私のウィジェットとデータを共有してみましょう資格を持っています。それが問題だろうか?これは私がデータの読み取り/書いている方法です:

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

EDIT

次のように上記のコードを変更した後、それが今で更新した後、保存されたデータを永続化:

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

をしかし今、私はウィジェットとデータを共有することはできません...私のウィジェットとデータを共有することができますが、これをどのように解決できますか?

+1

データの保存方法は? NSUserDefaults、Keychain、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"); 
関連する問題