Además del muy buen enfoque NSUserDefaults, hay otra manera fácil de almacenar datos de un NSArray, NSDictionary o NSData en un archivo. Puede utilizar estos métodos, así:
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag
respectivamente (para una NSDictionary):
+ (id)dictionaryWithContentsOfFile:(NSString *)path
sólo hay que darle una ruta válida a una ubicación. De acuerdo con la Guía de programación de aplicaciones de iOS, el directorio/Library/Caches sería el mejor lugar para almacenar los datos que necesita para mantenerse entre los lanzamientos de la aplicación. (Ver here)
Con el fin de guardar/cargar un diccionario de un presentadas llamados "gestores" en su documento directoy usted podría utilizar estos métodos:
-(void) loadDictionary {
//get the documents directory:
NSArray *paths = NSSearchPathForDirectoriesInDomains (NSCachesDirectory, NSUserDomainMask, YES);
NSString *cacheDirectory = [paths objectAtIndex:0];
//create a destination file name to write the data :
NSString *fullFileName = [NSString stringWithFormat:@"%@/managers", cacheDirectory];
NSDictionary* panelLibraryContent = [NSDictionary dictionaryWithContentsOfFile:fullFileName];
if (panelLibraryContent != nil) {
// load was successful do something with the data...
} else {
// error while loading the file
}
}
-(void) storeDictionary:(NSDictionary*) dictionaryToStore {
//get the documents directory:
NSArray *paths = NSSearchPathForDirectoriesInDomains
(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cacheDirectory = [paths objectAtIndex:0];
//make a file name to write the data to using the
//cache directory:
NSString *fullFileName = [NSString stringWithFormat:@"%@/managers", cacheDirectory];
if (dictionaryToStore != nil) {
[dictionaryToStore writeToFile:fullFileName atomically:YES];
}
}
De todos modos este enfoque es muy limitado y hay que gastar mucho trabajo extra si desea almacenar datos más complejos. En ese caso, la API CoreData es muy útil.
perfecto! ¡Gracias! – Toastor
'-setValue: forKey:' y '-valueForKey', respectivamente, también están bien. Además, siempre se realiza una copia de seguridad de 'standardUserDefaults' cuando se sincroniza un iDevice. Esto es genial si quieres incluir compras en la aplicación. – SK9
Gracias perfecto trabajando muy bien –