2009-10-28 3 views
89

Ist das der Fall? Wird NSUserDefaults zurückgesetzt, wenn Sie ein Update für eine App im App Store senden oder werden sie zurückgesetzt?Bleiben NSUserDefaults durch ein Update auf eine App im Appstore bestehen?

Meine App stürzt ab, wenn sie aktualisiert wird, stürzt aber nicht ab, wenn sie vollständig heruntergeladen wird - also versuche ich herauszufinden, was in der aktualisierten Sitzung möglicherweise von der frisch heruntergeladenen Sitzung abweichen könnte.

Prost, Nick.

+0

Die Dateien in ** Dokumente ** und ** Bibliothek ** werden ** erhalten **, wie die Dokumentation behauptet: http://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/ Konzeptionelle/iPhoneOSProgrammingGuide/RuntimeEnvironment/RuntimeEnvironment.html # // Apple_ref/doc/uid/TP40007072-CH2-SW7 – Geri

Antwort

101

Sie werden normalerweise erst zurückgesetzt, wenn der Benutzer die App löscht. Für grundlegende Daten ist NSUserDefaults der beste Weg, um Daten wie Präferenzen, Daten, Zeichenfolgen usw. zu speichern. Wenn Sie Bilder und Dateien speichern möchten, ist das Dateisystem eine bessere Wahl.

+5

Gibt es irgendwo in der Apple-Dokumentation dies erwähnt? –

+1

Entschuldigung - Ich habe vergessen, Ihnen für Ihre schnelle Antwort zu danken! - Wenn jemand einen Link zu irgendeiner Form von Apple-Dokumentation findet, die das sagt, wäre es ausgezeichnet .... In der Dokumentation für NSUserDefaults sagt es nichts darüber, also denke ich, dass ich (fälschlicherweise) davon ausgegangen war, dass die Standardeinstellungen gelöscht werden. Dies scheint der sicherste Weg für Apple zu sein, Apps sicher zu aktualisieren! –

+0

Es könnte der sicherste Weg sein, aber es wäre unglaublich nervig für die Benutzer, wenn sie alle ihre Einstellungen ändern müssten, sobald eine App aktualisiert wurde. Ich habe in der Regel drei oder vier App-Updates pro Tag; Ich bin mir sicher, dass andere iPhone-Nutzer noch mehr haben. Voreinstellungen für jedes Update zu löschen würde mein iPhone grundsätzlich unbrauchbar machen. –

7

Ich glaube die Antwort ist JA, es wird weiter bestehen. Dies ist auch vollständig im Kapitel Anwendungsverzeichnis im Apple iPhone OS Programming Guide dokumentiert.

4
  1. Direkte Antwort auf die gestellte Frage: JA.
  2. Ihr Problem: Ihre App wird aufgrund von logischen Problemen abgestürzt. Angenommen, Sie speichern ein Objekt in den Standardeinstellungen und die App überprüft ihren Wert beim Start (oder anderswo). In Ihrem Update könnten Sie die Art der Überprüfung oder Verwendung ändern, z. Sie erwarten einen Wert, aber das Objekt ist Null, oder umgekehrt. Dies kann eine SIGABRT oder EXC_BAD_ACCESS verursachen.
2

Wenn Sie Coredata-Modell hatte und verändert Sie etwas in Ihrem Modell und zu aktualisieren, ohne Steuerung der Migration, das ist wahrscheinlich Grund, warum die App stürzt auf Update ...

+0

Ich würde erwarten, dass es ein Fall sein könnte :) kein NSUserdefault –

1

ich eine ähnliche Erfahrung haben. Unsere App speichert eine Versionsnummer in Settings.Bundle/Root.Plist. Dies wird über die App "iPhone-Einstellungen" angezeigt. Was wir finden ist, dass bei einer Installation die Versionsnummer aus dem App-Paket geladen wird - daher ist die Versionsnummer korrekt. Bei einem Update ändert sich jedoch die Versionsnummer nicht. Dadurch entsteht der Eindruck, dass der Benutzer eine vorherige Version der App ausführt. Wir haben keine Logik, die mit der Versionsnummer verknüpft ist, sondern dient nur zur Anzeige (sie könnte von Contact Center-Mitarbeitern bei der Fehlerdiagnose verwendet werden).

Unsere Erfahrung ist NSUserDefaults wird nicht gelöscht, wenn ein Benutzer unsere App aktualisiert, aber die Einstellungen Anzeige wird auch nicht aktualisiert.

Verwandte Themen