2009-10-28 4 views
89

È questo il caso? Gli NSUserDefaults vengono ripristinati quando si invia un aggiornamento a un'app sull'App Store o vengono ripristinati?Do NSUserDefaults persiste attraverso un aggiornamento a un'app nell'appstore?

La mia app si arresta in modo anomalo quando viene aggiornata ma non si blocca quando viene scaricata completamente, quindi sto provando a determinare cosa potrebbe essere diverso nella sessione aggiornata alla sessione appena scaricata.

Cheers, Nick.

+0

I file in ** Documenti ** e ** Libreria ** saranno ** conservati ** come afferma la documentazione: http://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/ Concettuale/iPhoneOSProgrammingGuide/RuntimeEnvironment/RuntimeEnvironment.html # // apple_ref/doc/uid/TP40007072-CH2-SW7 – Geri

risposta

101

Di solito non vengono ripristinati a meno che l'utente non cancelli l'app. Per i dati di base, NSUserDefaults è il modo migliore per salvare dati come preferenze, date, stringhe ecc. Se stai cercando di salvare immagini e file, il file system è una scelta migliore.

+5

Esiste da qualche parte nella documentazione Apple questo è menzionato? –

+1

Scusa - Ho dimenticato di ringraziarti per la tua risposta veloce! - Se qualcuno può trovare un link a qualsiasi forma di documentazione Apple che dice questo, sarebbe eccellente ... Nella documentazione di NSUserDefaults non dice nulla su questo, quindi penso di aver (erroneamente) assunto che i default venissero cancellati. Questo sembrerebbe il modo più sicuro per Apple di aggiornare sicuramente le app! –

+0

Potrebbe essere il modo più sicuro, ma sarebbe incredibilmente fastidioso per gli utenti se dovessero reimpostare tutte le loro preferenze ogni volta che un'app viene aggiornata. Generalmente ho tre o quattro aggiornamenti di app al giorno; Sono sicuro che gli altri utenti di iPhone ne avranno ancora di più. Pulire le preferenze per ogni aggiornamento renderebbe il mio iPhone inutilizzabile. –

7

Credo che la risposta sia SI, persisterà. Questo è anche completamente documentato nel capitolo Directory dell'applicazione nella Guida alla programmazione del sistema operativo Apple iPhone.

4
  1. Risposta diretta alla domanda postata: SÌ.
  2. Il tuo problema: L'app si arresta in modo anomalo a causa di problemi di logica. Supponiamo di memorizzare un oggetto nei valori predefiniti e l'app ne verifica il valore all'avvio (o altrove). Nell'aggiornamento è possibile modificare il modo in cui viene controllato o utilizzato, ad es. ti aspetti un valore, ma l'oggetto è nullo o viceversa. Ciò potrebbe causare un SIGABRT o EXC_BAD_ACCESS.
2

Se tu avessi modello CoreData e hai cambiato qualcosa nel vostro modello e aggiornare, senza gestione della migrazione, questo è probabilmente il motivo per cui si blocca il ragionare app su aggiornamento ...

+0

Mi aspetterei che potrebbe essere un caso :) non un NSUserdefault –

1

Ho un'esperienza simile. La nostra app memorizza un numero di versione in Settings.Bundle/Root.Plist. Questo viene visualizzato tramite l'app Impostazioni iPhone. Quello che troviamo è che su una installazione il numero di versione viene caricato dal pacchetto dell'app, quindi il numero di versione è corretto. In un aggiornamento, tuttavia, il numero di versione non cambia. Questo dà l'impressione che l'utente stia eseguendo una versione precedente dell'app. Non abbiamo alcuna logica legata al numero di versione, è solo per la visualizzazione (potrebbe essere utilizzata dal personale del contact center per diagnosticare i guasti).

La nostra esperienza è NSUserDefaults non viene cancellata quando un utente aggiorna la nostra app, ma il display delle impostazioni non viene aggiornato neanche.