Question

je précédemment utilise initWithContentsOfURL pour télécharger un fichier plist dans un NSDictionary, mais cela se bloque l'interface utilisateur lorsqu'il est exécuté sur le même thread alors maintenant je suis déplacé à NSURLConnection la question est que je ne peux plus appeler une méthode pour initialiser le NSDictionary avec NSMutableData. Quelle est la meilleure façon de prendre NSMutableData et le placer dans un NSDictionary?

Était-ce utile?

La solution

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

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

est l'option la plus simple.

Autres conseils

Sans savoir exactement ce que vous essayez de faire, je vais prendre un coup de couteau à cela; même si elle ne fonctionne 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 (a besoin des choses comme la vérification des erreurs, etc.), mais il peut vous aider à démarrer.

Caveat: J'ai écrit un logiciel de cacao depuis plusieurs années, mais je ne l'ai jamais touché un iPhone, de sorte que est une supposition

.

Votre NSDictionary a d'autres données que vous devez préserver?

Dans la connexion: didReceiveResponse: méthode (délégué de NSURLConnection), vous pouvez copier votre ancien NSDictionary dans un NSMutableDictionary puis insérez les données de réponse URL dans aussi bien. Ensuite, convertir le NSMutableDictionary dans une nouvelle NSDictionary.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top