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
- 1. Modifica da NSUserDefaults a NSCoding
- 2. NSCoding VS Core dati
- 3. NSUserDefaults vs CFPreferenze, cosa considerare
- 4. Come testare l'unità NSCoding?
- 5. Memorizzazione di token di autenticazione su iOS - NSUserDefaults vs Keychain?
- 6. Dati principali vs NSUserDefaults per dati utente registrati
- 7. Salvataggio di array con NSCoding
- 8. Aggiunta di NSCoding come estensione
- 9. UIImage e NSCoding iOS 5.1
- 10. NSUserDefaults - Xamarin
- 11. Non conforme al protocollo 'NSCoding' - Swift 3
- 12. Come codificare Int come facoltativo utilizzando NSCoding
- 13. Swift: non è conforme al protocollo NSCoding
- 14. Come memorizzare un NSUInteger usando NSCoding?
- 15. Riflesso Objective-C per un'implementazione generica NSCoding
- 16. Come testare con NSUserDefaults?
- 17. Salva stringa in NSUserDefaults?
- 18. NSUserDefaults provoca app rifiutare
- 19. È NSUserDefaults threadsafe
- 20. Come proteggere NSUserDefaults?
- 21. Problemi/Domande riguardanti NSUserDefaults
- 22. Override AppleLanguages in NSUserDefaults
- 23. Swift NSUserDefaults setString: forKey :?
- 24. Rileva modifiche su NSUserDefaults
- 25. NSUserDefaults nel parco giochi iOS
- 26. NSUserDefaults contiene valore o no?
- 27. NSKeyedArchiver/NSuserDefaults - salvataggio di CGRect
- 28. A cosa serve - [NSUserDefaults registerDefaults:]?
- 29. Quanto è persistente [NSUserDefaults standardUserDefaults]?
- 30. Come utilizzare NSUserDefaults con AppDelegate
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