2012-04-10 17 views
3

Ich verwende NSUserDefaults sehr umfangreich. Ich speichere in NSUserDefaults viele Arrays von Informationen über den Benutzer und benutze sie später in einer anderen Ansicht.Verwenden von NSUserDefaults zu viel

Meine Frage ist, ist das ein falscher Ansatz? oder dies kann ein Problem beim Senden an AppStore sein?

Danke ..

+0

Wenn Sie die Cloud mögen, warum versuchen Sie nicht, Ihre Daten in die iCloud zu laden? Dies sichert auch Ihre Daten, so dass Sie nicht mit Datenverlust kämpfen müssen. – Paul

Antwort

3

Ja, es ist ein falscher Ansatz, aber ich glaube nicht, dass ein Problem für Sie sein, wenn Sie es in den Appstore senden.

Was Sie wahrscheinlich tun müssen, ist einige Konfigurationsdateien hinzufügen und Sie verwalten, oder vielleicht Kerndaten in Ihrem Projekt verwenden, um Ihnen eine genauere Antwort nur zu geben, Ihr Projekt zu kennen.

Mit freundlichen Grüßen.

EDIT bessere Erklärung hinzuzufügen, wenn Verwendung NSUserDefaults

Sie will nur die NSUserDefaults verwenden Konfigurationen zu speichern, die Standardeinstellung für den Benutzer sein wird, wie die Benutzer Lieblingsfarbe für den Hintergrund zum Beispiel.

Sie möchten nicht in den NSUserDefaults, Passwörter, temporäre Informationen speichern, wenn Sie ein Spiel machen, werden Sie dort nicht Ihre Rangliste und solche Dinge speichern.

Von apple doc

Die NSUserDefaults-Klasse stellt eine programmatische Schnittstelle für mit dem Standardwertesystem zu interagieren. Das Standardsystem ermöglicht es einer -Anwendung, ihr Verhalten an die Vorlieben eines Benutzers anzupassen. Zum Beispiel können Sie Benutzern erlauben zu bestimmen, welche Einheiten der Messung Ihre Anwendung anzeigt oder wie oft Dokumente automatisch gespeichert werden. Anwendungen zeichnen solche Voreinstellungen auf, indem sie einer Gruppe von Parametern in der Standarddatenbank eines Benutzers Werte zuweisen. Die Parameter werden als Standardwerte bezeichnet, da sie normalerweise als Standardeinstellung für den Standardzustand einer Anwendung beim Start bestimmen.

4

Es gibt keine feste Regel darüber, was oder wie viele Informationen in NSUserDefaults gespeichert werden können (außer dass Sie niemals sichere Daten speichern sollten). Sie werden sicherlich nicht aus dem App Store abgelehnt, es sei denn, Sie missbrauchen NSUserDefaults bis hin zu Abstürzen.

Ich bin verwirrt durch Ihre Aussage über die Verwendung in einer anderen Ansicht, obwohl. NSUserDefaults ist dafür vorgesehen, kleine Datenmengen über Sitzungen hinweg zu speichern, nicht um Daten zwischen Objekten in einer Anwendung zu übertragen. Wenn Sie es für Letzteres verwenden, sollten Sie Ihre Anwendungsarchitektur erneut besuchen.

1

Es wird nicht bevorzugt, zu viele Daten in userdefaults zu speichern. Sie können plist oder Core Data verwenden, um Ihre Daten zu speichern (this is a good Core Data Tutorial). Und auch NSUSerDefaults ist schwer zu ändern & Objekte zu entfernen, so versuchen Sie es nur zum Speichern Benutzername & Passwort ect so viel wie Sie können.

+0

+1 für Tutorial-Link –

+0

Nein, Passwörter sind die einzige Sache, die niemals in NSUserDefaults gespeichert werden sollte. Der Schlüsselbund existiert aus einem Grund! –

1

Sie werden nicht aus dem App Store abgelehnt, aber seine nicht wirklich gute Praxis, es zu tun. Erwägen Sie die Verwendung von "Core-Daten" zum Speichern von Ergebnissen und Werten.Und wenig NSNotifications und NSUserDefaults für die Kommunikation zwischen den ViewControllern.

Wenn Sie mit NSUserDefaults vor allem für die Kommunikation zwischen verschiedenen VCs, würde ich vorschlagen, mit Delegates (Message Passing (oder), Rückrufe)

0

Hier ist eine nützliche thread. Gehen Sie im Wesentlichen zu Ihrem Projektordner und schauen Sie sich die Größe der pList-Datei an.

Die Antworten, die ich hilfreich waren die Projektdatei gehen und in der plist Dateigröße aussehen:

5 Objekte fast nichts. Es wird Dir gut gehen!


Auf meinem Rechner habe ich etwa 28 MB an Daten in meinem Benutzervorgaben. Das verursacht überhaupt keine Probleme.


Von allgemeiner Programmiererfahrung mit Arrays ich Leistung erraten würde beginnt schnell, wenn Sie in 1000 erhalten zu verfallen, je nach Elementgröße. Daher hätte ich in einem Programm nicht das Problem, ein paar hundert Elemente zu speichern. Dieses sagte, dass ich wahrscheinlich anfangen würde, eine sqlite3 Datenbank oder coredata zu verwenden, eher früher als später, wenn ich Sie war.