我正在使用NSDocument创建一个应用程序.MyDocument.xib在NSScrollView中只有一个NSTextView.当我执行⌘S保存时,我收到一条错误消息('文档'无标题'无法保存为"Untitled.rubytext".').如何将我的应用程序保存为RTF文件?我的意思是使用NSDocument(我猜dataRepresentationOfType但我不确定?)
提前致谢.
我想补充一点,dataForType:error:链接页面中的示例实现有一些过时或完全不准确的信息.以下是我发给Apple的报告:
dataOfType:error:读取的示例实现:
- (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;
}
Run Code Online (Sandbox Code Playgroud)
这有一些问题.首先,NSTextView没有dataFromRange:documentAttributes:error:方法.应该[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;
}
Run Code Online (Sandbox Code Playgroud)
或RTF或其他文本值类型的一些其他适当的字典值.
虽然看起来OP在发布时可能没有看过该文档,但只是链接到文档并没有像人们想象的那样有用,因为文档被破坏了.经过一段时间的冲击,我发现了这个问题,尽管我已经逐字复制了苹果公司的实施,但我还是碰到了与OP相同的错误.
希望这有助于其他人.
| 归档时间: |
|
| 查看次数: |
4363 次 |
| 最近记录: |