2010-03-23 12 views
9

Estoy tratando de escribir un NSDictionary en un plist, pero cuando abro el plist no se han escrito datos en él. Desde el registro mi ruta se ve correcta y mi código es bastante estándar. Alguna idea?escribiendo NSDictionary para aplicar en mi paquete de aplicaciones

NSArray *keys = [NSArray arrayWithObjects:@"key1", @"key2", @"key3", nil]; 
NSArray *objects = [NSArray arrayWithObjects:@"value1", @"value2", @"value3", nil]; 
NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys]; 

for (id key in dictionary) { 
    NSLog(@"key: %@, value: %@", key, [dictionary objectForKey:key]); 
} 

NSString *path = [[NSBundle mainBundle] pathForResource:@"FormData" ofType:@"plist"]; 
NSLog(@"path:%@", path); 

[dictionary writeToFile:path atomically:YES]; 

Respuesta

24

Johan tiene razón: no tiene permiso para modificar el paquete de su aplicación. Tiene dos buenas opciones para guardar su diccionario: el directorio de documentos, que es respaldado por iTunes cuando un usuario sincroniza su dispositivo; o el directorio de cachés, que no está respaldado. Si no necesita hacer una copia de seguridad de los datos, colóquelos en cachés para que no desacelere la sincronización. Puede obtener las rutas de directorio de esta manera:

NSString *documentsDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 

NSString *cachesDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
+3

+1 para incluir los detalles. – alesplin

+1

Creo que esto probablemente necesite una información adicional ahora que existe el intercambio de documentos. Desde Apple: "Si no desea que los archivos se compartan con el usuario, colóquelos en el directorio de la biblioteca de su aplicación. Si ninguno de los subdirectorios de Biblioteca estándar es apropiado, cree un directorio privado dentro del directorio de la Biblioteca y asígnele el nombre de su ID de paquete de la aplicación. A continuación, puede usar ese directorio para almacenar los archivos que son privados para su aplicación ". –

5

No se guarda porque no puede escribir en el paquete de la aplicación. Guarde su archivo en otro lugar, en la carpeta de documentos, por ejemplo.

Cuestiones relacionadas