NSDocument读取RTFD数据

时间:2010-02-15 18:24:51

标签: cocoa rtf nsdocument

我正在编写文本编辑器,我想添加RTFD支持。将RTFD文件类型添加到我的Info.plist后,我收到消息“readFromFileWrapper:ofType:error:必须覆盖您的应用程序才能处理文件包。”

我在文档中浏览了一下,发现了一些东西,但我没有设法做任何事情。有人可以这么善良并帮助我吗?

- (BOOL)readFromFileWrapper:(NSFileWrapper *)fileWrapper ofType:(NSString *)typeName error:(NSError **)outError {

    if ([typeName isEqualToString:@"Rich Text with Attachments"])  {   
        NSLog(@"Its RTFD");
        //it gets to here but I don't know how to load the rtfd data then :(
}

ofType:typeName]    return YES; }

任何帮助都是适用的:)

2 个答案:

答案 0 :(得分:0)

幸运的是,RTFD特别容易。查看readRTFDFromFile:的{​​{1}}和writeRTFDToFile:atomically:方法。

来自NSText Class Reference

  

readRTFDFromFile:

     

尝试在路径读取RTFD文件,如果成功则返回NSText,如果没有则返回YES

     

NO

     

<强>讨论
   path 应该是- (BOOL)readRTFDFromFile:(NSString *)path文件或.rtf文件包装器的路径,而不是.rtfd文件包装器中的RTF文件。

如果您来自.rtfd,请执行以下操作:

NSURL

为安全起见,请先致电[textView readRTFDFromFile:[[self fileURL] path]];

答案 1 :(得分:-1)

我尝试了你的代码片段,并取得了以下成果:

打开了NSDocument窗口,标题已更新为RTFD文件的名称,但NSTextView仍为空白。

我非常确信我的代码会打开它,因为我从NSDocument实例获取了自己的URL,将其转换为NSString并将其发送到textview ...

if ([typeName isEqualToString:@"Rich Text with Attachments"]) {
        NSString *urlString = [[self fileURL] absoluteString];
        NSLog(@"%@",urlString);
        [textView readRTFDFromFile:urlString];

        return YES;
    }

日志返回了这个:

file://localhost/Users/David/Documents/Coursework/Geography%20Coursework.rtfd/

所以它应该有效吗?