0

我正在开发一个文本编辑器,我想添加 RTFD 支持。将 RTFD 文件类型添加到我的 Info.plist 后,我​​收到消息“readFromFileWrapper:ofType:error: must be overridden for your application to handle file packages.”

我浏览了文档并发现了一些东西,但我并没有设法做所有事情......有人可以这么好心并帮助我吗?

- (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; }

任何帮助都会得到帮助:)

4

2 回答 2

0

幸运的是,RTFD 是一种特别容易的方法。查看 的readRTFDFromFile:writeRTFDToFile:atomically:方法NSText

NSText 类参考

读取RTFDFromFile:

尝试读取pathYES处的 RTFD 文件,如果成功则返回,否则返回NO

- (BOOL)readRTFDFromFile:(NSString *)path

讨论
路径应该是.rtf文件或.rtfd文件包装器的路径,而不是文件包装器中的 RTF 文件的路径.rtfd

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

[textView readRTFDFromFile:[[self fileURL] path]];

为了安全起见,[[self url] isFileURL]先打电话。

于 2010-02-15T18:30:54.650 回答
-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/

那么它应该工作吗?

于 2010-02-16T12:34:18.543 回答