首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NSDocument时保存文件

使用NSDocument时保存文件
EN

Stack Overflow用户
提问于 2010-01-01 01:51:14
回答 2查看 4.4K关注 0票数 1

我正在使用NSDocument创建一个应用程序。MyDocument.xib只是在NSScrollView中有一个NSTextView。当我执行一个⌘S来保存它的时候,我得到了一个错误信息( 'The document“Untitled”not be saved as“Untitled.rubytext”.“)。如何让我的应用程序将其另存为RTF文件?我的意思是使用NSDocument (我猜是dataRepresentationOfType,但我不确定?)

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-01 01:54:23

苹果answered this for you是很久以前的事了。

票数 0
EN

Stack Overflow用户

发布于 2010-05-01 04:59:06

我想补充的是,链接页面中dataForType:error:的示例实现包含一些过时的或完全不准确的信息。这是我发给苹果的报告:

dataOfType:error:的示例实现为:

代码语言:javascript
复制
- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError {
    [textView breakUndoCoalescing];
    NSData *data = [textView dataFromRange:NSMakeRange(0, [[textView textStorage] length])
                             documentAttributes:nil
                             error:outError];
    if (!data && outError) {
        *outError = [NSError errorWithDomain:NSCocoaErrorDomain
                                code:NSFileWriteUnknownError userInfo:nil];
    }
    return data;
}

这有一些问题。首先,NSTextView没有dataFromRange:documentAttributes:error:方法。在给定文档中指定的数据假定结构的情况下,这应该是[text dataFromRange…]

其次,根据NSAttributedString的文档,dataFromRange:documentAttributes:error:“需要一个文档属性字典字典,至少指定NSDocumentTypeDocumentAttribute以确定要写入的格式”。

因此,示例实现应该至少读取

代码语言:javascript
复制
- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError {
    [textView breakUndoCoalescing];
    NSData *data = [text dataFromRange:NSMakeRange(0, [[textView textStorage] length])
                             documentAttributes:[NSDictionary dictionaryWithObjectsAndKeys:NSPlainTextDocumentType, NSDocumentTypeDocumentAttribute, nil]
                             error:outError];
    if (!data && outError) {
        *outError = [NSError errorWithDomain:NSCocoaErrorDomain
                                code:NSFileWriteUnknownError userInfo:nil];
    }
    return data;
}

或者用于RTF或其他文本值类型的一些其他适当的字典值。

虽然OP在发布时可能没有看到该文档,但简单地链接到文档并不像人们想象的那样有帮助,因为文档被破坏了。尽管我照搬了苹果的实现,但我还是发现了这一点,尽管我自己也犯了和OP一样的错误。

希望这对其他人有帮助。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1986397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档