Encodage de NSDictionary contenant des NSData

Bonjour à  tous,


 


Je développe actuellement une application dans laquelle je dois établir une connection entre un iPhone et un mac (sous forme de requêtes/réponses).


 


Les réponses sont des NSDictionary transformés en NSData pour le transfert (grâce au protocole NSCoding).


Jusqu'à  présent, tout fonctionne bien (je peux transmettre des NSString, NSDictionary... et même des objets divers qui implémentent le protocole NSCoding).


 


Mon problème actuel concerne le transfert d'images...


Je pensais pouvoir les transférer comme NSData (en utilisant la méthode [NSData dataWithContentsOfFile:], mais il semble qu'il y ait un problème lorsque je met des NSData dans le NSDictionary qui est envoyé à  l'iPhone.


 


Sur l'application Mac, j'ai quelque chose comme ça :


 


if ([request.method isEqualToString:@get_films_list]) {


 


// TEMP RESPONSE


NSData *pictureTest = [NSData dataWithContentsOfFile:@/Users/Thomas/Downloads/1529975_10202639782733627_1000776349_o.jpg];


NSDictionary *response = @{@films_list:[TFFilmDetails temp_filmsList], @picture_test:pictureTest};


 


// Send the response to the device


[server sendResponse:response toDevice:device];


 


}


 


Pas de problème de ce côté là , mais l'iPhone semble incapable de décoder ce qu'il reçoit (le NSDictionary "response" converti en NSData).


 


NSDictionary *response = (NSDictionary *)[NSKeyedUnarchiver unarchiveObjectWithData:data];


 


J'obtiens cette erreur dans le log : 


 


*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSKeyedUnarchiver initForReadingWithData:]: incomprehensible archive (0x62, 0x70, 0x6c, 0x69, 0x73, 0x74, 0x30, 0x30)'


 


Est-il impossible d'inclure des NSData dans un NSDictionary qui sera lui-même converti en NSData ?


Ou bien m'y prend-je mal quelque part ?


 


Merci beaucoup !


 


 


Thomas


Réponses

  • Au temps pour moi, j'ai résolu le problème... La socket ne recevait pas la réponse dans son intégralité, et du coup forcément l'application ne pouvait pas reconstruire le NSDictionary correspondant...


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