我创建了一个存储歌曲名称和艺术家的NSMutableArray。我试图将此数组转换为NSData格式,以便我可以将其保存到文本文件。尝试这样做时,我得到的输出是不可读的:
bplist00ÔghX$ versionX $ objectsY $ archiverT $ top†¯$ !“) - / 3459:; @ AEFGKLMQRSWXY] ^ _铜$nullÒ? R $ 0V $类€€#Ò ZNS.objectsª€€€ € ...等
我用来从NSMutableArray转换为NSData的代码是:
NSFileManager *fm;
NSData *dataCache = [NSKeyedArchiver archivedDataWithRootObject:myList];
fm = [NSFileManager defaultManager];
if ([fm createFileAtPath:@"/users/nicholasvogler/desktop/Mysongs.txt" contents:dataCache attributes:nil] == NO)
{
NSLog (@"Could not create data file");
return 1;
}
数组中的所有对象都是NSStrings,我为字符串和数组添加了以下方法:
-(void) encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject: songname];
[encoder encodeObject: artist];
}
答案 0 :(得分:4)
您对输出的期望是什么?你有什么是二元plist。这就是归档数据(例如NSKeyedArchiver
)发出的结果。还有一种XML格式,可以通过NSPropertyListSerialization
访问,尽管没有人使用XML格式存档数据,因为实际的plist表示是一个实现细节。
所以尽管它对你来说是一个不可读的二进制blob,它仍然会编码你想要的东西,你可以用NSKeyedUnarchiver
再次解码它。
答案 1 :(得分:0)
如果数组中的所有对象都是字符串(或包含字符串的字典),那么在我看来将它保存为JSON会更有意义。