Beim Speichern kleiner Datenmengen aus meiner App ist es besser NSUserDefaults
oder NSCoding
zu verwenden? Jetzt verwende ich NSCoding
(encodeWithCoder/initWithCoder, etc.) aber es scheint, dass NSUserDefaults
einfacher sein könnte. Meine Gesamtdaten beziehen sich auf eine Vielzahl von Inten/Strings/MutableArray, nur etwa ein paar Dutzend insgesamt.NSUserDefaults vs NSCoding
Antwort
Ich nehme an, dass Sie unter NSCoding
meinen "Speichern von Objekten in Dateien nach dem Serialisieren von ihnen mit NSCoding
APIs". Obwohl beide Ansätze für primitive Datentypen gelten, wird die Methode NSUserDefaults
schwieriger, wenn Sie Objekte mit komplexen Strukturen serialisieren.
Im Gegensatz dazu bietet das Speichern von Daten der Klassen NSCoding
in Dateien eine hohe Flexibilität in Bezug auf die Objektstruktur. Wenn Sie wissen, dass Sie diese Flexibilität in Zukunft nicht benötigen, gehen Sie mit NSUserDefaults
; Wenn Sie nicht sicher sind, bleiben Sie bei den Dateien.
Ja, Ihre Annahme ist richtig (meine Frage hätte klarer formuliert werden sollen). Ich bleibe bei der NSCoding/Datei-Methode, da es bereits funktioniert. Vielen Dank. – wayneh
Es ist meine Präferenz eine plist-Datei zu verwenden, die programmatisch
NSString *appFile;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
appFile = [documentsDirectory stringByAppendingPathComponent:@"myFile"];
//this creates the file path
NSDictionary* tempDict = [[NSDictionary alloc]initWithContentsOfFile:appFile];
//this gets the data from storage
[tempDict writeToFile:appFile atomically:YES];
//this updates the data to storage
Du vergleichst Äpfel mit Orangen erstellt wird. Sie könnten NSCoding verwenden, um etwas in NSUserDefaults zu speichern. Welchen Kontrast möchten Sie also zeichnen? – matt
Es klingt wie, was Sie wollen, ist 'NSPropertyListSerialization'. – iluvcapra
Weiter wurde Matt gesagt, NSCoding ist überhaupt kein Speichermechanismus. Was machst du mit deinen verschlüsselten Daten? Das sollten Sie mit NSUserDefaults vergleichen. – rmaddy