NSMutableArray到NSData到.txt文件 - 输出不可读

时间:2012-12-12 01:48:17

标签: objective-c nsmutablearray nsfilemanager type-conversion

我创建了一个存储歌曲名称和艺术家的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];
}

2 个答案:

答案 0 :(得分:4)

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

所以尽管它对你来说是一个不可读的二进制blob,它仍然会编码你想要的东西,你可以用NSKeyedUnarchiver再次解码它。

答案 1 :(得分:0)

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