Convertir NSData (XML) -> NSJsonSerialisation / NSXMLParser alternative

Am_MeAm_Me Membre
septembre 2014 modifié dans API UIKit #1

Hello suite à  mon problème précédent j'ai essayé un autre parser XML et visiblement iOS 8 est la cause des crash au niveau de [parser parse]. Je commence déjà  à  hair cette OS ...


 


Y aurait-il un moyen ou un projet github open source permettant de convertir le NSData récupérer par NSUrlSession dans mon cas (contenant un fichier xml) et le convertir en JSON ?


 


Ou auriez vous des Parseurs à  me proposer qui fonctionne bien en générale ? (et iOS 8 de préférence)


 


Merci


Réponses

  • Qu'est-ce qui ne va pas avec cette version d'iOS ?


     


    Concernant le parser que tu utilises, il faut peut-être attendre un peu, il y a des ajustements à  faire ?


  • Am_MeAm_Me Membre
    septembre 2014 modifié #3

    Alors j'ai résolu mon problème sans le vouloir :o   :D   <3   :o </p>

     


    JE suis passé du NSUrlSession + NSUrlSessionDataTask a l'ancienne façon de faire : "ancienne" mais qui marche correctement allez savoir pourquoi ... du coup j'hésite à  passer mes NSUrlSession en NSUrlConnection



    NSString *url = [[NSString alloc] initWithFormat:@http:;//www/%@/ficher.xml",API];
    ////NSLog(@Je lance la requete : %@",url);
    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:url]];

    NSOperationQueue *queue = [[NSOperationQueue alloc] init];
    [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

    //methode qui appel le parseur // sans intérêt ...
    [self updateMyObjectswithData:data];

    completion();
    }];


    Ca c'était avant : trouvez l'erreur s'il y en a une. Vous n'êtes pas obligé hein :P



    NSURLSession *session = [NSURLSession sharedSession];
    NSURLSessionDataTask *task = [session dataTaskWithRequest:request
    completionHandler:
    ^(NSData *data, NSURLResponse *response, NSError *error) {
    [self updateMyObjectswithData:data];

    completion();
    }];
    [task resume];

  • Am_MeAm_Me Membre
    septembre 2014 modifié #4

    Alors pour te répondre swift : quand je parse un fichier XML tout fonctionne bien sur iOS et quand je me suis lancé sur iOS 8 sur la même appli même code il arrivait que mon application crachais lors de l'appel de la méthode -parse de NSXMLParser.


     


    Alors l'erreur la plus courante : il me disait qu'il y avait une erreur en fin de fichier alors que sur iOS 7 0 problème. Intrigué j'ai cherché sur les forum puis j'ai remarqué que je n'étais pas le seul mais que chacun avait son problème puis m'es venu à  l'esprit d'utiliser NSUrlConnection en asynchrone pour tester et puis pouf ça marche ...


     


    Alors je me pose des question : NSUrlSession que j'ai écrit au dessus équivaut-il à  mon NSUrlConnection ?

    N'est-il pas asynchrone   ??? Bref je ne saurai : j'attend que les pro répondent s'ils ont la réponse


     


    En tout cas parfait ... :o je suis content 


     


     


    Et pour une alternative j'ai trouvé : SMXMLDocument mais que je n'utiliserai pas pour le moment mais qui est très très intuitive 


  • Concernant Swift, ça ne m'étonne pas.


     


     


    Maintenant que tu as réglé ton problème, t'aurais 5 minutes pour voir mon code ? :D

  • Am_MeAm_Me Membre
    septembre 2014 modifié #6

    Ce n'est pas en swift en fait quand j'ai dit "En fait swift" je m'adressais à  toi haha bref je code qu'en Obj-C.


    Ali dans plusieurs post déconseille de se lancer dans ce langage et délaisser Obj-C pour le moment du fait qu'il vient de sortir et que c'est tout frais.


     


    Et Obj-C pour le moment me convient


     


    Alors je t'ai répondu sur ton post précédent :). Post un bout de code sur le post en question. Si tu as "peur" fait comme moi prend un éditeur de texte/code : SublimeText le fait très bien et tu fait un remplacement d'un mot par un autre partout dans ton code 


     


    (oui j'ai le temps ;) )


  • Ah merde, au tant pour moi, je pensais que tu parlais du langage :D


     


    Le truc c'est que je ne sais pas trop quoi poster car je ne sais pas d'où viens le problème. Bon sinon je post tout est je supprimerais un max après... (j'ai plus que ça a faire en plus et c'est fini)


Connectez-vous ou Inscrivez-vous pour répondre.