Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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
Macos 检索可以在给定URL打开文件的所有应用程序包标识符_Macos_Cocoa_Uti - Fatal编程技术网

Macos 检索可以在给定URL打开文件的所有应用程序包标识符

Macos 检索可以在给定URL打开文件的所有应用程序包标识符,macos,cocoa,uti,Macos,Cocoa,Uti,如何检索可以在给定URL打开文件的所有应用程序包ID?就像给定URL上的文件是.xml一样,我希望获得可以打开.xml的所有应用程序包ID的数组。您可以使用“启动服务”来获得具有功能的应用程序的包标识符数组 代码可能如下所示: NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"sample" withExtension:@"xml"]; NSStri

如何检索可以在给定URL打开文件的所有应用程序包ID?就像给定URL上的文件是.xml一样,我希望获得可以打开.xml的所有应用程序包ID的数组。

您可以使用“启动服务”来获得具有功能的应用程序的包标识符数组

代码可能如下所示:

NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"sample"
                                         withExtension:@"xml"];

NSString *utiType = nil;
NSError *error = nil;

BOOL success = [fileURL getResourceValue:&utiType
                         forKey:NSURLTypeIdentifierKey error:&error];

if (!success) {
    NSLog(@"getResourceValue:forKey:error: returned error == %@", error);
}

NSArray *bundleIdentifiers = [(NSArray *)LSCopyAllRoleHandlersForContentType(
                         (CFStringRef)utiType, kLSRolesAll) autorelease];

NSLog(@"bundleIdentifiers == %@", bundleIdentifiers);

在最新版本的OS X中,启动服务是
CoreServices.framework
伞形框架的一部分。您可能需要#将其导入要在中调用
LS*
函数的类中,并将其添加到目标的
linkbinary With Libraries
构建阶段。(在OS X 10.8 SDK中,它似乎可以正常工作,无需与之链接)。

您可以使用“启动服务”来获取功能应用程序的捆绑包标识符数组

代码可能如下所示:

NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"sample"
                                         withExtension:@"xml"];

NSString *utiType = nil;
NSError *error = nil;

BOOL success = [fileURL getResourceValue:&utiType
                         forKey:NSURLTypeIdentifierKey error:&error];

if (!success) {
    NSLog(@"getResourceValue:forKey:error: returned error == %@", error);
}

NSArray *bundleIdentifiers = [(NSArray *)LSCopyAllRoleHandlersForContentType(
                         (CFStringRef)utiType, kLSRolesAll) autorelease];

NSLog(@"bundleIdentifiers == %@", bundleIdentifiers);
在最新版本的OS X中,启动服务是
CoreServices.framework
伞形框架的一部分。您可能需要#将其导入要在中调用
LS*
函数的类中,并将其添加到目标的
linkbinary With Libraries
构建阶段。(在OSX10.8SDK中,在没有链接的情况下,它似乎可以正常工作)