2017-01-02 2 views
1

У меня есть приложение для iPhone, которое я разработал с Xamarin и публикую на 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");