Wie serialisieren ich ein Objekt mit NSKeyedArchiver in NSPropertyListXMLFormat_v1_0 Format einzureichen?

StackOverflow https://stackoverflow.com/questions/726053

Frage

Hoffentlich Titel ist deutlich genug. Wie auch immer, es scheint:

[NSKeyedArchiver archiveRootObject:rootObject toFile:path];

ist beschränkt auf NSPropertyListBinaryFormat_v1_0.

ich brauche das Format lesbar Mensch zu sein [so xml]. Wenn Sie interessiert sind, dann ist dies das Projektes Teil schließlich auf Github mit einer Blog-Post setzen werde ich über „How to Unit Test GPS-Anwendungen“

: -)

War es hilfreich?

Lösung

Sie haben NSPropertyListSerialization zu verwenden, um es zu konvertieren. Im Grunde genommen das Objekt unter der Annahme, dass Sie die Serialisierung myObject genannt wird und die ultimative Datei wird in myPath gespeichert sind, würden Sie es in XML serialisiert so etwas wie das folgende Codefragment verwenden:

NSString *error = nil;
NSData *mySerializedObject = [NSKeyedArchiver archivedDataWithRootObject:myObject];
NSData *xmlData = [NSPropertyListSerialization dataFromPropertyList:mySerializedObject
                        format:NSPropertyListXMLFormat_v1_0
                        errorDescription:&error]:
if( xmlData ) {
    [xmlData writeToFile:myPath atomically:YES];
} else {
    NSLog(error);
    [error release];
}

Andere Tipps

Statt die Klassenmethode zu verwenden, versuchen, eine Instanz von NSKeyedArchiver Erstellen und Verwenden von setOutputFormat:NSPropertyListXMLFormat_v1_0 XML-Format angeben. Der einzige Nachteil ist es, ein paar zusätzliche Zeilen Code übernehmen würde, da tatsächlich die Serialisierung handhabt, wird es nicht nur ein NSData Objekt in einem Schritt zurück.

In Kürze erhalten Sie haben die Objektklasse zu codieren, durch Verfahren unter Verwendung von - (void) encodeWithCoder (NSCoder *) Encoder {

[coder encodeObject:name forKey:@"name"];
[coder encodeObject:address forKey:@"address"];
[coder encodeObject:position forKey:@"position"];

}

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