Tengo una aplicación de iPhone en la que varios objetos de dominio se rellenan con datos ingresados por el usuario. Para restaurar el estado después de la interrupción, estos objetos implementan el protocolo NSCoding y se escriben en el disco (el directorio de Documentos) en el mensaje applicationWillTerminate. Luego, cuando la aplicación se inicia de nuevo, los bytes de datos se cargan y los objetos de dominio se vuelven a llenar. Código para obtener el directorio de documentos es el siguiente:¿Cómo arreglo el error de Cocoa 513?
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
Esto funcionó muy bien en el simulador, pero una vez desplegué la aplicación para el iPhone que dejó de funcionar. El motivo es el código de error 513 de iPhone, que aparentemente significa "permiso denegado". Hay una nota en la documentación dev iPhone que explican un poco más -
En el dispositivo, la ruta devuelta (documentsDirectory) es similar a la siguiente: /var/mobile/Applications/30B51836- Documentos D2DD-43AA-BCB4-9D4DADFED6A2/
Sin embargo, en el simulador, la ruta devuelta toma la forma siguiente:
/Volumes/materia/Usuarios/JohnDoe/Librería/Application Soporte/iPhone Simulador/user/Aplicaciones/118086A0-FAAF-4CD4-9A0F-CD5E8D287270/Documentos
Este es el comportamiento exacto que estoy viendo. No estoy muy seguro de cómo se relaciona esto con obtener un error de permiso denegado y qué puedo hacer para solucionarlo. Sí dice abajo -
a leer y escribir las preferencias del usuario, utilizar la clase NSUserDefaults o la API CFPreferences. Estas interfaces eliminan la necesidad de que construyan una ruta al directorio Biblioteca/Preferencias/y archivos de preferencias de lectura y escritura directamente. Para obtener más información sobre el uso de estas interfaces, consulte “Adición de el paquete de configuración”.
Si la aplicación contiene sonido, imagen , u otros recursos en el paquete aplicación, debe utilizar la clase NSBundle o CFBundle opaca escriba para cargar esos recursos. Los paquetes tienen un conocimiento inherente de dónde viven los recursos dentro de la aplicación. Además, los paquetes son conscientes de las preferencias de idioma del usuario y son capaces de elegir recursos localizados sobre los recursos predeterminados automáticamente. Para obtener más información sobre los paquetes, ver “El paquete de aplicaciones.”
No veo cómo puedo usar el paquete de aplicaciones para cargar bytes de datos sin embargo. Cualquier ayuda o ejemplos?
Creo que la diferencia es la barra al final de "Documentos". –