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

问题描述:

我有一个已经处理* .txt文件的基于NSDocument的应用程序。我可以将这些文件拖放到扩展坞中,我的应用程序将正确启动。用Cocoa打开带有不同扩展名的文件

现在我想能够打开* .text文件。所以我说:

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

我*的plist

但我无法打开受拖累& *的.text文件在被告席上投下他们。 (我可以做MyApp> File> Open> 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:error: must be overridden for your application to support non-'file:' URLs.

我没有继承NSDocumentController,所以我真的需要?或者有没有更好/更简单的方法来做到这一点?

在此先感谢

文件扩展名的的Info.plist文件不应包含一段文字(.)。如果你这样做会发生什么?:

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

修正了......它没有工作 – nacho4d 2011-06-06 07:46:24