Cocoa 使用NSDocument时保存文件
我正在使用NSDocument创建应用程序。MyDocument.xib在NSScrollView中只有一个NSTextView。当我做一个⌘为了保存它,我收到一条错误消息“文档“Untitled”无法保存为“Untitled.rubytext”。”。如何使我的应用程序将其保存为RTF文件?我的意思是使用NSDocument,我猜是类型的数据表示,但我不确定Cocoa 使用NSDocument时保存文件,cocoa,nsdocument,Cocoa,Nsdocument,我正在使用NSDocument创建应用程序。MyDocument.xib在NSScrollView中只有一个NSTextView。当我做一个⌘为了保存它,我收到一条错误消息“文档“Untitled”无法保存为“Untitled.rubytext”。”。如何使我的应用程序将其保存为RTF文件?我的意思是使用NSDocument,我猜是类型的数据表示,但我不确定 提前感谢。很久以前的苹果。很久以前的苹果。我想补充一点,链接页面中dataForType:error:的示例实现包含一些过时或完全不准确的
提前感谢。很久以前的苹果。很久以前的苹果。我想补充一点,链接页面中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相同的错误上撞了自己的脑袋,尽管我已经一字不差地复制了苹果的实现
希望这对其他人有所帮助。此链接不存在。这就是为什么你应该在评论中包含解决方案。此链接不存在。这就是为什么你应该在评论中包含解决方案的原因。