Frage

Ich war vorher initWithContentsOfURL mit einem plist in einem NSDictionary zum Download, aber das hängt die Benutzeroberfläche, wenn dies jetzt auf dem gleichen Thread laufen ich NSURLConnection bewegt haben das Problem ist, dass ich nicht mehr eine Methode aufrufen können die NSDictionary init mit NSMutableData. Was ist der beste Weg, NSMutableData zu nehmen und sie in eine NSDictionary?

War es hilfreich?

Lösung

Was Sie brauchen, ist NSPropertyListSerialization:

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

Ist die einfachste Option.

Andere Tipps

Ohne genau zu wissen, was Sie versuchen zu tun, werde ich einen Stich an diese zu übernehmen; selbst wenn es nicht funktioniert, ich bin sicher, dass Sie es für Ihre Zwecke anpassen können.

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

Im Klartext, eine Zeichenfolge aus den gegebenen Daten erstellen, die auf eine temporäre Datei schreiben, und laden Sie dann die temporäre Datei in ein NSDictionary Objekt.

ist Dieser Code bei weitem nicht perfekt (benötigte Sachen wie Fehlerprüfung, etc.), aber es kann Sie den Einstieg.

Vorab: Ich habe seit mehreren Jahren Cocoa-Software geschrieben, aber ich habe noch nie berührt ein iPhone, so dass eine Vermutung ist

.

Hat Ihr NSDictionary haben andere Daten, die Sie brauchen, zu erhalten?

Im Anschluss: didReceiveResponse: Methode (Delegierter des NSURLConnection), können Sie Ihre alte NSDictionary in eine NSMutableDictionary kopieren und dann die URL als auch Antwortdaten in sie einzufügen. Dann wandeln die NSMutableDictionary in eine neue NSDictionary.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top