Domanda

Ok, sono tornato su questo compito. Ho il mio XML scaricato correttamente dal mio server web con un URL che punta al file del server, tuttavia, quando rilevo che la rete è "irraggiungibile", indico semplicemente l'URL al codice XML locale della mia applicazione e visualizzo il seguente errore (NB il file è una copia diretta di quella sul server).

Non riesco a trovare la descrizione dei dettagli, ma penso che stia dicendo che l'URL punta a una posizione inaccessibile. Sto memorizzando questa risorsa nella posizione sbagliata? Penso di volerlo nella HomeDirectory / Library ??

Output di debug

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.)
È stato utile?

Soluzione 3

Secondo Dave DeLong,

  

Ciò significa che si verificano problemi durante l'analisi del file.

Penso che potrebbe essere il riferimento XSLT nell'XML, poiché punta al server web. Esaminerò e tornerò a questa domanda con una risposta migliorata.

Era il percorso del file. Il mio codice non era nemmeno vicino al posto giusto - e mi mancava una lettera finale "s". La definizione del codice di errore implica una "prematura fine del file", che mi ha fatto troncare il mio file senza successo. Sono quindi tornato alle origini e ho ripetuto il file system per cercare il mio file.

Ho eseguito il debug utilizzando NSFileManager per scorrere il mio file e quindi verificato che fosse caricabile con il metodo contentsAtPath . Sono stato in grado di scaricarlo con NSLog (). Una volta convinto che il file fosse ben formato e caricato in forma grezza, mi sono assicurato che il mio NSURL fosse costruito con la stessa sintassi e metodi. Quindi è stato caricato correttamente. Ora posso caricare un file di rete "full-optional" contenuto o un "campione" locale contenuti.

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. Spero che il mio essere esplicito qui sia utile agli altri mentre eseguono il debug del loro trattamento dei dati.

Altri suggerimenti

Sulla stessa linea della risposta accettata, ho avuto un problema simile perché stavo caricando il mio file usando:

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

Invece, dovrebbe essere:

[NSURL fileURLWithPath:pathToFile];

Anch'io ho trascorso molto tempo a guardare come il mio file potrebbe non essere ben formato, potrebbe mancare, ecc. prima di rendermi conto che era una differenza così sottile.

scroll top