使用Cocoa打开具有不同扩展名的文件

时间:2011-06-06 06:50:09

标签: objective-c cocoa macos

我有一个基于NSDocument的应用程序,它已经处理* .txt文件。我可以将这些文件拖放到Dock中,我的应用程序将正确启动。

现在我希望能够打开* .text文件。所以我补充道:

<key>CFBundleTypeExtensions</key>
    <array>
        <string>.txt</string>
        <string>.text</string>
    </array>

到我的* plist

但是我无法通过拖放它们来打开* .text文件。 (我可以做MyApp&gt;文件&gt;打开&gt; myFile.text) 我可以像往常一样打开* .txt,然后将它们拖放到停靠栏中。

我尝试过实现这些NSApp委托方法,但现在我收到错误,我无法打开任何类型的文件。

- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename{
    NSURL *url = [NSURL URLWithString:filename];
    NSError *error = nil;
    [[NSDocumentController sharedDocumentController] openDocumentWithContentsOfURL:url display:YES error:&error];
    if (error) {
        NSLog(@"error: %@", [error localizedDescription]);
        error = nil;
        return NO;
    }
    return YES;
}

- (void)application:(NSApplication *)sender openFiles:(NSArray *)filenames{
    for (NSString *filename in filenames) {
        [self application:sender openFile:filename];
    }
}

错误:

  

typeForContentsOfURL:错误:必须是   覆盖您的申请   支持非'file:'URL。

我不是NSDocumentController的子类,所以我真的需要吗?或者有更好/更简单的方法吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

Info.plist 文件中的文件扩展名不应包含句点字符(.)。如果你这样做会怎么样?:

<key>CFBundleTypeExtensions</key>
    <array>
        <string>txt</string>
        <string>text</string>
    </array>