Pregunta

Ok, estoy de vuelta en esta tarea. Tengo mi XML descargado correctamente de mi servidor web con una URL que apunta al archivo del servidor, sin embargo, cuando detecto que la red es "inaccesible", simplemente apunto la URL al XML local de mi aplicación y recibo el siguiente error (NB: el archivo es una copia directa de la que está en el servidor).

No puedo encontrar una descripción detallada, pero creo que está diciendo que la URL apunta a una ubicación inaccesible. ¿Estoy almacenando este recurso en la ubicación incorrecta? Creo que lo quiero en el HomeDirectory / Library ??

Salida de depuración

loadMyXml: /var/mobile/Applications/950569B0-6113-48FC-A184-4F1B67A0510F/MyApp.app/SampleHtml.xml
2009-10-14 22:08:17.257 MyApp[288:207] Wah! It didn't work. Error Domain=NSXMLParserErrorDomain Code=5 "Operation could not be completed.   (NSXMLParserErrorDomain error 5.)" 
2009-10-14 22:08:17.270 MyApp[288:207] Operation could not be completed. (NSXMLParserErrorDomain error 5.)
¿Fue útil?

Solución 3

Según Dave DeLong,

  

Eso significa que tiene problemas al analizar tu archivo.

Creo que puede ser la referencia XSLT en el XML, ya que apunta al servidor web. Revisaré y volveré a esta pregunta con una respuesta mejorada.

Era la ruta del archivo. Mi código ni siquiera estaba cerca de la ubicación correcta, y me faltaba una carta final 's'. La definición del código de error implica un "final prematuro de archivo", lo que provocó que truncara mi archivo sin ningún éxito. Luego volví a lo básico e iteré en el sistema de archivos para buscar mi archivo.

Depuré utilizando el NSFileManager para iterar en mi archivo y luego verifiqué que se podía cargar con el método contentsAtPath . Pude volcarlo con NSLog (). Una vez que estuve convencido de que el archivo estaba bien formado y cargado en formato sin formato, me aseguré de que mi NSURL se construyera con la misma sintaxis y métodos. Entonces se cargó correctamente. Ahora puedo cargar un archivo de red " con todas las funciones " contenido o un local " muestra " contenido.

NSDirectoryEnumerator *dirEnumerator = [[NSFileManager defaultManager] enumeratorAtPath: NSHomeDirectory()];
NSString *something;
NSString *f;

while( something = [dirEnumerator nextObject] ) {
    f = [[[NSString alloc] initWithFormat: @"%@/%@", NSHomeDirectory(), something] autorelease];
    if( [f hasSuffix :@"two_cookies.xml"] ){
    NSData *nsData = (NSData*) [[NSFileManager defaultManager] contentsAtPath: f];
        NSLog(@"%@", nsData );
    }
}

Output

2009-10-22 00:47:40.147 MyApp[13843:20b] <?xml version="1.0" encoding="iso-8859-1"?>

P.S. Espero que ser explícito aquí sea útil para otros, ya que depuran su procesamiento de datos.

Otros consejos

En la misma línea que la respuesta aceptada, tuve un problema similar porque estaba cargando mi archivo usando:

[NSURL URLWithString:pathToFile];  // **Wrong**

En su lugar, debería ser:

[NSURL fileURLWithPath:pathToFile];

Yo también pasé mucho tiempo observando cómo mi archivo podría no estar bien formado, faltar, etc. antes de darme cuenta de que era una diferencia tan simple y sutil.

scroll top