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