2009-08-16 6 views
0

Avant d'utiliser initWithContentsOfURL pour télécharger un plist dans un NSDictionary, mais cela bloque l'interface utilisateur lorsqu'il est exécuté sur le même thread alors maintenant j'ai déplacé à NSURLConnection le problème est que je ne peux plus appeler une méthode init le NSDictionary avec NSMutableData. Quelle est la meilleure façon de prendre NSMutableData et de le placer dans un NSDictionary?NSDictionary De NSMutableData

Répondre

3

Qu'est-ce que vous avez besoin est NSPropertyListSerialization:

NSDictionary *myDict = [NSPropertyListSerialization propertyListFromData:myData mutabilityOption:NSPropertyListImmutable format:nil errorDescription:nil]; 

est l'option plus simple.

1

Sans savoir exactement ce que vous essayez de faire, je vais essayer de le faire; Même si ça ne marche pas, je suis sûr que vous pouvez l'adapter à vos besoins.

NSString *s = [[NSString alloc] initWithBytes:[mutableData bytes] length:[mutableData length] encoding:NSUTF8StringEncoding]; 
NSString *path = NSTemporaryDirectory(); 
path = [path stringByAppendingPathComponent:@"tmpfile.txt"]; 
if ([s writeToFile:path atomically:NO encoding:NSUTF8StringEncoding error:nil]) { 
    NSDictionary *d = [[NSDictionary alloc] initWithContentsOfFile:path]; 
} 

En clair, créer une chaîne à partir des données, écrire que dans un fichier temporaire, puis chargez le fichier temporaire dans un objet NSDictionary.

Ce code est loin d'être parfait (il faut des trucs comme la vérification d'erreur, etc.) mais il peut vous aider à démarrer. Mise en garde: J'ai écrit du logiciel Cocoa pendant plusieurs années, mais je n'ai jamais touché un iPhone, donc c'est une supposition.

0

Est-ce que votre NSDictionary a d'autres données que vous devez conserver? Dans la connexion: didReceiveResponse: méthode (délégué de NSUrlConnection), vous pouvez copier votre ancien NSDictionary dans un NSMutableDictionary et y insérer également les données de réponse d'URL. Puis convertissez NSMutableDictionary en un nouveau NSDictionary.

Questions connexes