1

我创建了一个 NSMutableArray,用于存储歌曲名称和艺术家。我正在尝试将此数组转换为 NSData 格式,以便可以将其保存到文本文件中。尝试这样做时,我得到的输出是不可读的:

bplist00ÔghX$versionX$objectsY$archiverT$top †¯$ !")-./3459:;?@AEFGKLMQRSWXY]^_cU$nullÒ R$0V$class€€#Ò 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];
}
4

2 回答 2

4

您到底期望输出是什么?你有一个二进制plist。这就是归档数据(例如NSKeyedArchiver)发出的内容。还有一种 XML 格式,可以通过 访问NSPropertyListSerialization,尽管没有人将 XML 格式用于存档数据,因为实际的 plist 表示是一个实现细节。

因此,尽管它对您来说是一个不可读的二进制 blob,但它仍然会编码您想要的内容,您可以使用NSKeyedUnarchiver.

于 2012-12-12T02:00:29.373 回答
0

如果数组中的所有对象都是字符串(或包含字符串的字典),那么在我看来,将其保存为 JSON 会更有意义。

于 2012-12-12T02:04:47.047 回答