2011-10-18 11 views
5

Mi aplicación escribe datos cifrados de las preferencias/información del usuario en un archivo, y lee desde ese archivo la próxima vez que se abre la aplicación.iOS: Guardar en un archivo funciona en el emulador pero no en el dispositivo

Creación de un archivo:

- (BOOL)writeFile:(NSString *)data:(NSString *)fileName { 
    return [data writeToFile:fileName 
       atomically:YES 
        encoding:NSUTF8StringEncoding error:nil]; 
} 

La lectura de un archivo:

- (NSString *)readFile:(NSString *)fileName { 
    NSData *data = [NSData dataWithContentsOfFile:fileName]; 
    NSString *str = [[[NSString alloc] initWithData:data 
             encoding:NSUTF8StringEncoding] autorelease]; 
    return str; 
} 

Esto funciona bien en el emulador. Los archivos se escriben y se leen como se espera. ¿Hay algo que tenga que configurar para leer/escribir archivos en dispositivos?

+1

¿Qué está pasando como 'fileName'? – jrturton

+1

Como dice @jrturton, ¿en qué archivo está escribiendo? Si no está en el directorio de la aplicación, el dispositivo real no lo permitirá, pero tal vez el simulador sí lo permita. – Kevin

+0

@Kevin ¿No puedo crear mi propio archivo para la aplicación? – dee

Respuesta

7

El nombre del archivo debe estar en el directorio de documentos. El simulador no tendrá tantas restricciones sobre dónde puede escribir archivos como lo hace el dispositivo.

Obtener el directorio de documentos de la siguiente manera:

NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *fileName = [documentsDirectory stringByAppendingPathComponent:@"myfilename.extension"]; 

Pass esto en sus funciones anteriores y que debe estar bien.

Cuestiones relacionadas