2012-10-09 1 views

답변

1

실행 서비스 'LSCopyAllRoleHandlersForContentType()을 사용하면 가능한 응용 프로그램의 번들 식별자 배열을 얻을 수 있습니다.

코드는 다음과 같이 보일 수 있습니다

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* 함수를 호출 할 클래스에서 #import하고 대상의 Link Binary With Libraries 빌드 단계에 추가해야 할 수도 있습니다. (OS X 10.8 SDK에서 링크하지 않고 여기에서 정상적으로 작동하는 것 같았습니다.)