0

アプリケーション データ (10.7 の Mac アプリ) を XML ファイルとしてエクスポートできるようにしています。XML との間でエクスポート/インポートできるようにしたい 1 つのフィールドはNSDataフィールドです。これを行う正しい/受け入れられる方法は何ですか? base64に変換して、その文字列を XML に書き込む必要がありますか?

リンクされた質問に対する受け入れられた回答がそうであるように、カテゴリを使用して独自のソリューションをロールバックしたくありません( Matt Gallagherのソリューションへのリンク)。

アップデート

私はちょうどNSPropertyListSerializationクラスを発見しました。期待は高まりましたが、表現を返す静的なシリアル化メソッドしかありませんNSData

4

1 に答える 1

0

返されるのは単なるUTF-8文字列であるため、 NSPropertyListSerializationクラスを使用できることに気付きました(私の更新がほのめかしたように) 。これは私がシリアル化するために使用しているものです:NSData-dataWithPropertyList:format:options:error:

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

そして逆シリアル化します:

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-17T14:42:59.340 に答える