Ios 使用NSKeyedArchiver从NSDictionary中保存的NSManagedObject生成XML
我有一个NSDictionary,其中包含一组NSManagedObject。 然后,我可以使用NSKeyedArchiver将其写入NSData对象。 这些都是使用它生成的,它工作得很好,允许我将模式的一部分保存到光盘上,然后将其作为核心数据模型中的一组新对象读回。 如果我使用archivedDataWithRootObject: 或archiveRootObject:toFile:,根据 我可以看到归档文件的格式是NSPropertyListBinaryFormat_v1_0,而我想在NSPropertyListXMLFormat_v1_0中序列化,这样我就可以将对象写入一个文件,然后在其他地方将它们作为普通的旧XML进行处理。(事实上,我想在基于Windows的系统上从它们生成文档。) 1) 我有办法做到这一点吗?如果是,怎么做? 2) 有没有更好的办法 我希望保持序列化的性质,因为我还希望稍后将文件发送回iOS设备并重新创建对象模型Ios 使用NSKeyedArchiver从NSDictionary中保存的NSManagedObject生成XML,ios,cocoa,core-data,nskeyedarchiver,Ios,Cocoa,Core Data,Nskeyedarchiver,我有一个NSDictionary,其中包含一组NSManagedObject。 然后,我可以使用NSKeyedArchiver将其写入NSData对象。 这些都是使用它生成的,它工作得很好,允许我将模式的一部分保存到光盘上,然后将其作为核心数据模型中的一组新对象读回。 如果我使用archivedDataWithRootObject: 或archiveRootObject:toFile:,根据 我可以看到归档文件的格式是NSPropertyListBinaryFormat_v1_0,而我想在NSP
initForWritingWithMutableData:
创建自己的NSKeyedArchiver
实例setOutputFormat:NSPropertyListXMLFormat\u v1\u 0
设置格式encodeObject:forKey:
对根对象进行编码finishEncoding
要取消归档以这种方式编码的数据,您必须以类似方式实例化一个
NSKeyedUnarchiver
谢谢Ole!我正朝那个方向走,但不确定这是不是正确的方向。下面是我在代码中所做的,以防它对某人有所帮助
NSDictionary *dataAsDictionary=[self toDictionaryBlockingRelationships:blockRelationship];
NSString *savePath = [@"~/Documents/Saved.data" stringByExpandingTildeInPath];
NSMutableData *xmlData=[NSMutableData data];
NSKeyedArchiver *archive=[[NSKeyedArchiver alloc ]initForWritingWithMutableData:xmlData];
[archive setOutputFormat:NSPropertyListXMLFormat_v1_0];
[archive encodeRootObject:dataAsDictionary];
[archive finishEncoding];
if(![xmlData writeToFile:savePath atomically:NO]){
NSLog(@"Failed to write to file to filePath=%@", savePath);
}
[archive release];