2

在基于文档的应用程序中,我可以保存/读取文件,但是当我必须从纯文本文件中读取时,问题就来了。
我只有一个要读/写的字符串,这就是代码:

- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError
{
    code=[codeView string];
    return [NSKeyedArchiver archivedDataWithRootObject: code];
}

- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError
{
    code=[NSKeyedUnarchiver unarchiveObjectWithData: data];
    return YES;
}

问题是保存一个 NSData 可能会产生一个像这样的文件:

bplist00‘X$versionX$objectsY$archiverT$top�܆£
U$null“ 
V$classYNS.stringÄP“Z$classnameX$classes_NSMutableString£XNSStringXNSObject_NSKeyedArchiver—TrootÄ#-27;AFMWYZ_jsÖâíõ≠∞µ����������������������������∑

对于人类来说不可读,对于文本编辑等其他应用程序不可读。我需要能够读取和保存纯文本文件,在我的 plist 文件中,我已经尝试通过将文档类型名称更改为 public.text 来实现这一点。
如何保存/读取以 UTF-8 编码的纯字符串?

4

2 回答 2

3

那个 gobbledygook 是 NSKeyedArchiver 的输出。您不希望这里有存档器。相反,只需向字符串询问它的dataUsingEncoding:,传递您想用于文本的任何编码(这些天通常是 UTF-8)。

于 2012-11-07T17:47:23.983 回答
1

@RamyAlZuhouri:从“TextEdit”项目(Apple 代码示例)中查看文件“Info-TextEdit.plist”中的“文档类型”。

可能在这里:~/Library/Developer/Shared/Documentation/DocSets/com.apple.adc.documentation.AppleOSX10_8.CoreReference.docset/Contents/Resources/Documents/samplecode/TextEdit

于 2012-11-07T21:53:29.263 回答