によって返されたNSData
がちょうどUTF-8文字列であるため、私はNSPropertyListSerializationクラスを使用できるとわかりました。
NSData *data = value;
NSError *error = nil;
NSData *plistData = [NSPropertyListSerialization dataWithPropertyList:data
format:NSPropertyListXMLFormat_v1_0
options:0
error:&error];
if (error) {
NSLog(@"Error serializing data to plist XML: %@", error);
} else {
NSString *plistString = [[NSString alloc] initWithData:plistData encoding:NSUTF8StringEncoding];
NSXMLElement *dataElement = [NSXMLElement elementWithName:field
stringValue:plistString];
}
そしてデシリアライズ::私はXMLに生データを追加しないでしょう
NSData *plistData = [element.stringValue dataUsingEncoding:NSUTF8StringEncoding];
NSData *originalData = [NSPropertyListSerialization propertyListWithData:plistData
options:NSPropertyListImmutable
format:NULL
error:&error];
if (error) {
NSLog(@"Error deserializing data from plist XML: %@", error);
} else {
value = originalData;
}
出典
2012-04-17 14:42:59
Dov
(NSDataのを)これは私がシリアル化するために使用しているものです。可能であれば、私は生データを持つ別のファイルを書き、そのURLをXMLフィールドに追加します。これはオプションでない場合、私は '>'、 '<'のような文字を避けるように注意して文字列に変換します。 – Mircea
@Mircea XMLのフォーマットは意味が分かります。インスタンス。バイナリフィールドは、表現されたエンティティの多くのフィールドのうちの1つだけであり、ファイル内には何百ものエンティティが存在することがあります。私は、シンプルさとユーザー編集可能な性質を1つのファイルのほんの一種を作ることよりも好む。 – Dov
XMLは特定の形式である必要がありますか、または標準のMac OS Xプロパティリスト形式で行いますか?それは純粋なXMLです。 –