Sto facendo un gioco e quando chiudo l'app (chiudi al multitask manager), tutti i miei dati sono andati! Quindi, la mia domanda è molto semplice: Come posso salvare i dati?Come salvare i dati in iOS
risposta
Diciamo che si desidera salvare punteggio e livello, che sono entrambe le proprietà di un oggetto chiamato dataHolder.
DataHolder può essere creato come un Singleton, in modo da non dover preoccuparsi troppo da dove si accede (il suo sharedInstance
in realtà):
E 'codice sarà un po' come questo:
DataHolder.h
#import <Foundation/Foundation.h>
@interface DataHolder : NSObject
+ (DataHolder *)sharedInstance;
@property (assign) int level;
@property (assign) int score;
-(void) saveData;
-(void) loadData;
@end
DataHolder.m
NSString * const kLevel = @"kLevel";
NSString * const kScore = @"kScore";
@implementation DataHolder
- (id) init
{
self = [super init];
if (self)
{
_level = 0;
_score = 0;
}
return self;
}
+ (DataHolder *)sharedInstance
{
static MDataHolder *_sharedInstance = nil;
static dispatch_once_t onceSecurePredicate;
dispatch_once(&onceSecurePredicate,^
{
_sharedInstance = [[self alloc] init];
});
return _sharedInstance;
}
//in this example you are saving data to NSUserDefault's
//you could save it also to a file or to some more complex
//data structure: depends on what you need, really
-(void)saveData
{
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:self.score] forKey:kScore];
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:self.level] forKey:kLevel];
[[NSUserDefaults standardUserDefaults] synchronize];
}
-(void)loadData
{
if ([[NSUserDefaults standardUserDefaults] objectForKey:kScore])
{
self.score = [(NSNumber *)[[NSUserDefaults standardUserDefaults]
objectForKey:kScore] intValue];
self.level = [(NSNumber *)[[NSUserDefaults standardUserDefaults]
objectForKey:kLevel] intValue];
}
else
{
self.level = 0;
self.score = 0;
}
}
@end
Non dimenticare di #importare "DataHolder.h" dove è necessario, o semplicemente inserirlo in ...-Prefix.pch
.
Si potrebbe effettuare il caricamento effettivo e il salvataggio in appDelegate
metodi:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[[DataHolder sharedInstance] saveData];
}
- (void)applicationWillEnterForeground:(UIApplication *)application
{
[[DataHolder sharedInstance] loadData];
}
Puoi accedere al tuo punteggio e livello di dati da qualsiasi luogo con [DataHolder sharedInstance].score
e [DataHolder sharedInstance].level
.
Questo potrebbe sembrare un eccessivo per un compito semplice ma aiuta sicuri di tenere le cose in ordine e può aiutare a evitare di mantenere tutti i dati in appDelegate
(che di solito è il rapido & sporco percorso per la soluzione).
È possibile salvare i dati in CoreData, SqlLite o NSUserDefaults Aggiornamento Realm è anche un'opzione e molto facile da implementare.
O un semplice file flat, contenente forse i dati in una rappresentazione JSON o in formato CSV. –
quale è sicuro? –
Se si ha qualcosa di sensibile, non memorizzarlo in NSUserDefaults. Prova a salvare in altri, come Realm sql o dati di base e usa la crittografia. se hai poche cose come il nome utente e la password del token, usa il portachiavi –
[NSUserDefaults standardUserDefaults]
è utile per piccole quantità di dati come le impostazioni utente e le preferenze. Normalmente lo si utilizza per consentire agli utenti di salvare vari bit di dati che definiscono valori globali come preferenze di caratteri, preferenze di armamenti, qualsiasi cosa, ecc.
Per quantità maggiori di dati come dettagli di livello di gioco o risultati o inventario di armi, ecc. Vorresti usare qualcosa come Core Data. Questo è un database più formale che può essere facilmente migrato man mano che lo schema dei dati cambia. Vedere i documenti qui: Core Data e Core Data Programming Guide
Si consiglia di utilizzare Realm per soluzioni più generalizzate.
Swift 3
Usa UserDefaults
UserDefaults.standard.set(„some value”, „key”)
let value = UserDefaults.standard.string(„key”)
Si può anche persistere array usando questo
Ci sono pochi modi per salvare i dati in ios.
- UserDefaults - ottimo modo per salvare una piccola quantità di dati.
- Portachiavi: posizione sicura per la sicurezza di dati sensibili come i dati di accesso e le password.
- database SQLite - Se l'applicazione dispone di una quantità enorme di dati strutturati
- CoreData - sulla base di un oggetto grafico che descrive gli oggetti che devono essere salvati salvataggio dei file
- - Naturalmente è anche possibile salvare direttamente tutti i tipi di file nel file system. Tuttavia, è possibile accedere al file system all'interno del contenitore dell'app a causa di motivi di sicurezza.
- Utilizzo del database di Realm - migliore alternativa a Core Data e SQLite db
- NSKeyedArchiver e NSKeyedUnarchiver - modo migliore per una piccola quantità di oggetti. // penso così
- 1. Xamarin iOS: non salvare i dati PKCS12 nel portachiavi iOS
- 2. Il modo migliore per salvare i dati su iOS?
- 3. Come salvare e recuperare i dati contenteditable
- 4. Suggerimenti su come salvare i dati
- 5. Come ottenere i dati dell'accelerometro in IOS?
- 6. Come salvare i dati con GSON in un file JSON?
- 7. Come salvare i dati nel file .txt in MATLAB
- 8. Come salvare ed estrarre i dati di sessione in codeigniter
- 9. Come salvare i dati HTML in SQL Server
- 10. CoreData Swift: come salvare e caricare i dati?
- 11. TinyMCE ajax per salvare i dati
- 12. Come modificare e salvare i dati di ViewModels sul database
- 13. Django - Come salvare i dati m2m tramite segnale post_save?
- 14. Come salvare e caricare correttamente i dati di numpy.array()?
- 15. Quando devo salvare i dati dell'applicazione in WinRT?
- 16. R salvare direttamente i dati in un file ZIP
- 17. come salvare e recuperare i dati dalla memoria locale Angular2?
- 18. Il modo migliore per salvare i dati in un'applicazione Java?
- 19. Problema di archiviazione dati iOS5. Dove salvare i file?
- 20. Come salvare un UIImage in formato JPEG progressivo in iOS?
- 21. come salvare un modello con dati esistenti e nuovi dati?
- 22. CSVWriter non salvare i dati su file - PERCHÉ?
- 23. Script per salvare i dati varbinary sul disco
- 24. Come salvare un batch di dati in Parse Cloud Code?
- 25. come salvare .xlsx i dati in un file come un blob
- 26. Miglior strategia di salvataggio dei dati principali (quando salvare i dati sul disco)
- 27. Come salvare un frame di dati in R
- 28. Salvare i file .dta in python
- 29. Posso cancellare i dati da iOS DeviceSupport?
- 30. Metodi per salvare i dati del modello Backbone.js?
Che tipo di dati sta cercando di salvare e quanto? –