如何在基于文档的应用程序中编写/保存纯纯文本文件?

时间:2012-11-07 17:34:00

标签: objective-c cocoa document

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

- (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编码的纯字符串?

2 个答案:

答案 0 :(得分:3)

gobbledygook是NSKeyedArchiver的输出。你不想在这里存档。相反,只需要询问字符串dataUsingEncoding:,传递你想用于文本的任何编码(这些天通常是UTF-8)。

答案 1 :(得分:1)

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

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