Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在objective-c中双击打开文件_Objective C_Macos - Fatal编程技术网

在objective-c中双击打开文件

在objective-c中双击打开文件,objective-c,macos,Objective C,Macos,我想在双击文件时打开应用程序中的文件。我已经向应用程序注册了文件类型,application:openFile:方法可以在我将文件放到应用程序图标上时正常工作。在苹果的文档中,它说,当用户双击一个文件时,这种方法也应该起作用 我看到的是,双击打开文件时,应用程序将激活,但Safari将打开文件(尝试打开.webloc文件)。但是方法application:openFile:不会被调用:( 下面是我如何在xcode中设置它的: 编辑: 我已将.webloc设置为作为我的应用程序的标准件打开。此外

我想在双击文件时打开应用程序中的文件。我已经向应用程序注册了文件类型,
application:openFile:
方法可以在我将文件放到应用程序图标上时正常工作。在苹果的文档中,它说,当用户双击一个文件时,这种方法也应该起作用

我看到的是,双击打开文件时,应用程序将激活,但Safari将打开文件(尝试打开.webloc文件)。但是方法
application:openFile:
不会被调用:(

下面是我如何在xcode中设置它的:

编辑:

我已将.webloc设置为作为我的应用程序的标准件打开。此外,右键单击“打开方式”>“我的应用程序”不起作用

编辑2:
如果我将文件扩展名重命名为.mp3或任何其他文件扩展名,我的应用程序将通过双击打开文件!奇怪…

双击文件并不会在其中打开所有可以处理文件类型的应用程序(你能想象当你双击JPEG时会发生什么吗?)-双击使用文件类型的默认应用程序。在这种情况下,Safari是webloc文件的默认读取器。您需要将其更改为您的应用程序(您可以从“获取信息”窗口执行此操作)如果您希望它是调用的文件。

可以有多个应用程序都知道如何打开同一类型的文件。如果您希望您的应用程序处理
.webloc
文件,请获取该类型文件的信息。然后在“打开方式:”的弹出菜单中选择您的应用程序:信息窗口的一部分。如果要将应用程序用于所有此类文件,请单击“全部更改…”按钮。

在Xcode中,使用“Mac OS X::Cocoa应用程序”模板创建一个新项目。然后实现

- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError
{ static NSString *content = @"Empty File";
   return [NSData dataWithBytes: [content UTF8String] 
                         length: 1 + strlen ([content UTF8String])]; }

然后,您将有一个工作示例与您的项目进行比较。

因为我自己也遇到了类似的问题,所以我将添加对我有效的内容。我发现.webloc文件从不调用
-application:openFile:
,相反,如果您只是希望双击.webloc并让您的应用程序处理它

本文选择的答案描述了解决我问题的过程:

我已将文件设置为默认使用我的应用程序打开。此外,当我选择“使用打开”>“我的应用程序”时,它不起作用。我的应用程序被设置为默认应用程序以打开此类文件。“使用打开”也不起作用。您是否也实现了
-application:openFiles:
?您是否按照文档中的说明在实现中调用
-replyToOpenOrPrint:
?是的,
应用程序:openFiles:
也在我的代码中。在应用程序图标上放置多个文件时也可以正常工作。我已经尝试了
replyToOpen或者打印:
但没有任何区别。
应用程序:openFile:
中的代码没有被调用。我认为你把我的问题搞错了。或者我不明白你的答案:(在apple文档中,它说:“创建并返回一个包含文档内容的数据对象,格式化为指定类型。”对于
dataOfType:error:
。我要寻找的是一种方法,可以打开用户双击的文件。不,对不起。示例Xcode项目允许您创建一个新文档,保存文档,然后双击打开它。上面的代码是需要更改以保存文件的模板代码。(我的答案中一个之后的方法也需要更改以返回“是”。)双击可以工作;也许它可以帮助您解决原始问题。当然,示例代码创建了一个新的文档类型“mydoc”,而您正在打开一个现有的文档类型“webloc”-因此示例代码可能没有帮助。我已经创建了“我自己的”属性列表编辑器中的.webloc文件,但刚刚打开的chrome。似乎只有在我使用.webloc扩展名时,Safari才会打开。如果我将扩展名更改为“.mp3”或任何其他文件,它将按预期工作,
应用程序:openFile:
将被调用:SAnyway,找到一些旧的.webloc文件(具有不同的图标)这一切都很好。所以我认为没有打开文件不是我的应用程序的错!