Objective-c 保存原始文本

Posted

技术标签:

【中文标题】Objective-c 保存原始文本【英文标题】:Objective-c saving raw text 【发布时间】:2009-12-26 15:05:49 【问题描述】:

我在基于文档的应用程序中实现了保存和加载方法。在保存方法中,我有

[NSArchiver archivedDataWithRootObject:[self string]];

[self string] 是一个 NSString。 当保存一个只有“正常内容”的文件时,创建的文件的内容是:

streamtypedè@NSStringNSObject+普通内容

有没有办法将原始文本存储在文件中?

感谢您的帮助。

【问题讨论】:

【参考方案1】:

NSString 中有一些方法可以保存到文件中:

NSString * s = @"Foo bar";

NSError * err = NULL;
BOOL result = [s writeToFile:@"/tmp/test.txt" atomically:YES encoding:NSASCIIStringEncoding  error:&err];

【讨论】:

换句话说,不要使用 NSArchiver。 好吧。我怎样才能使用这种方法? - (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError 返回数据。我应该把 NSString 方法放在哪里? writeToFile:atomically:encoding:error 是 NSString 上的一个方法。请参阅文档。 相反,我使用了[string dataUsingEncoding:NSUTF8StringEncoding];。它按预期工作。 顺便说一句:NSString 是一头野兽。当我看到 stringWithContentsOfURL 时,我首先摇了摇头。【参考方案2】:

由于我是可可的新手,我不知道这是否是正确的方法,甚至是有效的方法。

但在快速查看文档后,我发现了这种 NSString 实例的方法,- (NSData *)dataUsingEncoding:(NSStringEncoding)encoding

快速尝试一个可以正常工作的示例项目: - (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError

所以这样的事情可能对你有用:

- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError 
    return [[self string] dataUsingEncoding:NSUnicodeStringEncoding];

【讨论】:

以上是关于Objective-c 保存原始文本的主要内容,如果未能解决你的问题,请参考以下文章

URLSessionDidFinishEventsForBackgroundURLSession 未调用-Objective-C

在 Objective-C 中实现纯虚方法

Objective-C Block与函数指针比较

从Objective-C向Swift转换学习到的经验

带有延迟 NSMenu 的 NSButton - Objective-C/Cocoa

iOS - 如何使用 JSON 和 Objective-C 提取和存储数据