我有一个基于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的子类,所以我真的需要吗?或者有更好/更简单的方法吗?
提前致谢
答案 0 :(得分:0)
Info.plist 文件中的文件扩展名不应包含句点字符(.
)。如果你这样做会怎么样?:
<key>CFBundleTypeExtensions</key>
<array>
<string>txt</string>
<string>text</string>
</array>