Quando si salvano piccole quantità di dati dall'interno della mia app, è meglio usare NSUserDefaults
o NSCoding
? In questo momento io uso NSCoding
(encodeWithCoder/initWithCoder, ecc.) Ma sembra che NSUserDefaults
potrebbe essere più semplice. I miei dati totali riguardano una varietà di Ints/Strings/MutableArray, solo poche decine circa.NSUserDefaults vs NSCoding
risposta
Suppongo che per NSCoding
intendi "salvare oggetti su file dopo averli serializzati con le API NSCoding
". Sebbene entrambi gli approcci siano validi per i tipi di dati primitivi, l'approccio NSUserDefaults
diventa più difficile una volta iniziato a serializzare oggetti con strutture complesse.
Al contrario, il salvataggio dei dati delle classi NSCoding
in file offre un alto grado di flessibilità in termini di struttura degli oggetti. Se sai che non avrai bisogno di questa flessibilità in futuro, vai con NSUserDefaults
; se non sei sicuro, rimani con i file.
Sì, la tua ipotesi è corretta (la mia domanda avrebbe dovuto essere dichiarata più chiara). Continuerò con il metodo NSCoding/file poiché funziona già. Grazie. – wayneh
E 'la mia preferenza di utilizzare un file plist che è a livello di codice creato
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
si sta confrontando le mele con le arance. È possibile utilizzare NSCoding per salvare qualcosa in NSUserDefaults, quindi quale contrasto stai cercando di disegnare? – matt
Sembra che quello che vuoi sia 'NSPropertyListSerialization'. – iluvcapra
Per ulteriori informazioni è stato dichiarato opaco, NSCoding non è affatto un meccanismo di archiviazione. Cosa stai facendo con i tuoi dati codificati? Questo è ciò che dovresti confrontare con NSUserDefaults. – rmaddy