Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 使用NSDocument时保存文件_Cocoa_Nsdocument - Fatal编程技术网

Cocoa 使用NSDocument时保存文件

Cocoa 使用NSDocument时保存文件,cocoa,nsdocument,Cocoa,Nsdocument,我正在使用NSDocument创建应用程序。MyDocument.xib在NSScrollView中只有一个NSTextView。当我做一个⌘为了保存它,我收到一条错误消息“文档“Untitled”无法保存为“Untitled.rubytext”。”。如何使我的应用程序将其保存为RTF文件?我的意思是使用NSDocument,我猜是类型的数据表示,但我不确定 提前感谢。很久以前的苹果。很久以前的苹果。我想补充一点,链接页面中dataForType:error:的示例实现包含一些过时或完全不准确的

我正在使用NSDocument创建应用程序。MyDocument.xib在NSScrollView中只有一个NSTextView。当我做一个⌘为了保存它,我收到一条错误消息“文档“Untitled”无法保存为“Untitled.rubytext”。”。如何使我的应用程序将其保存为RTF文件?我的意思是使用NSDocument,我猜是类型的数据表示,但我不确定


提前感谢。

很久以前的苹果。

很久以前的苹果。

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

dataOfType:error:的示例实现如下:

这方面有一些问题。首先,NSTextView没有dataFromRange:documentAttributes:error:method。鉴于文档中指定的数据的假定结构,这应该是[text-dataFromRange…]

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

因此,示例实现至少应为

- (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相同的错误上撞了自己的脑袋,尽管我已经一字不差地复制了苹果的实现


希望这对其他人有所帮助。

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

dataOfType:error:的示例实现如下:

这方面有一些问题。首先,NSTextView没有dataFromRange:documentAttributes:error:method。鉴于文档中指定的数据的假定结构,这应该是[text-dataFromRange…]

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

因此,示例实现至少应为

- (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相同的错误上撞了自己的脑袋,尽管我已经一字不差地复制了苹果的实现


希望这对其他人有所帮助。

此链接不存在。这就是为什么你应该在评论中包含解决方案。此链接不存在。这就是为什么你应该在评论中包含解决方案的原因。