Question

Ok, je suis de retour sur cette tâche. Mon fichier XML est correctement téléchargé sur mon serveur Web avec une URL pointant sur le fichier du serveur. Cependant, lorsque je détecte que le réseau est 'inaccessible', je pointe simplement l'URL vers le code XML local de mon application et le message d'erreur suivant s'affiche (Remarque: le fichier est une copie directe de celle sur le serveur).

Je ne trouve pas la description détaillée, mais je pense que cela signifie que l'URL pointe vers un emplacement inaccessible. Est-ce que je stocke cette ressource au mauvais endroit? Je pense que je le veux dans HomeDirectory / Library ??

Sortie de débogage

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.)
Était-ce utile?

La solution 3

Selon Dave DeLong,

  

Cela signifie que vous rencontrez des problèmes lors de l'analyse de votre fichier.

Je pense que cela pourrait être la référence XSLT dans le XML - car elle pointe vers le serveur Web. Je vais examiner et revenir à cette question avec une réponse améliorée.

C'était le chemin du fichier. Mon code n'était même pas proche du bon emplacement - et il me manquait une lettre de fin. La définition du code d'erreur implique une "fin de fichier prématurée", ce qui m'a amené à tronquer mon fichier sans succès. Je suis ensuite revenu aux notions de base et j'ai itéré sur le système de fichiers pour rechercher mon fichier.

J'ai débogué à l'aide de NSFileManager pour effectuer une itération dans mon fichier, puis j'ai vérifié qu'il était chargeable à l'aide de la méthode contentsAtPath . J'ai pu le vider avec NSLog (). Une fois convaincu que le fichier était bien formé et chargé brut, je me suis assuré que mon NSURL était construit avec la même syntaxe et les mêmes méthodes. Ensuite, il s'est chargé correctement. Maintenant, je peux charger un fichier réseau "complet". contenu ou un "échantillon" local contenu.

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 );
    }
}

Sortie

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

P.S. J'espère que mon explication ici aidera les autres à déboguer le traitement de leurs données.

Autres conseils

Dans le même ordre d'idées que la réponse acceptée, j'ai eu un problème similaire car je chargeais mon fichier avec:

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

Au lieu de cela, cela devrait être:

[NSURL fileURLWithPath:pathToFile];

Moi aussi, j'ai longuement réfléchi à la façon dont mon dossier pouvait ne pas être bien formé, manquant, etc. avant de réaliser qu'il s'agissait d'une simple et subtile différence.

scroll top