OS가 아이콘을 제공하는 장소가 최소한 세 곳 있습니다.
한 상황에서
, NSWorkspace는 위치를 식별하는 데 도움이 될 수 있습니다 :이 꽤 아이콘의 경로를받지 않습니다
NSString* uti = [ws typeOfFile:@"/Users/egorr/Desktop/file.vwx" error:&error];
NSLog(@"UTI: %@", uti);
NSLog(@"UTI localized description: %@", [ws localizedDescriptionForType:uti]);
NSLog(@"UTI error description: %@",[error localizedDescription]);
NSURL* utiDeclarationURL = (NSURL*)UTTypeCopyDeclaringBundleURL((CFStringRef)uti);
NSLog(@"UTI declaration URL: %@", utiDeclarationURL);
NSDictionary* utiDeclaration = (NSDictionary*)UTTypeCopyDeclaration((CFStringRef)uti);
NSLog(@"UTI declaration: %@", utiDeclaration);
을하지만, 선언가 함께있는 응용 프로그램 하나를 얻을 것이다 UTI.
아이콘이 Quick Look 플러그인에서 제공 될 수도 있으며 qlmanage의 출력을 사용하여 이러한 경우인지를 판별 할 수 있습니다.
사용자는 Finder의 정보 입수 창에서 주어진 "유형"의 모든 파일에 대해 선호하는 응용 프로그램을 설정할 수 있습니다. 예를 들어 TextMate에서 항상 열려있는 텍스트 파일 유형을 설정할 수 있습니다. TextMate는 저장 가능한 모든 파일 유형에 대한 사용자 정의 파일 아이콘을 제공합니다. Finder의 get 정보 창에서이 변경을 수행하면 해당 유형의 모든 파일에 TextMate에서 제공하고 UTI로 등록 된 아이콘이 표시됩니다. 이 경우인지 확인하려면 실행 서비스 데이터베이스를 살펴볼 필요가 있습니다. lsregister -dump
필자가 필요로하는 이유는 디버깅 목적입니다. 할당되어서는 안되는 파일에 아이콘이 지정되고 있으며 아이콘이 정확히 어디에서 오는지 알면 도움이됩니다. – ericg
다음 코드를 사용하여 답변의 일부를 얻을 수 있습니다. NSString * uti = [ws typeOfFile : @ "/ Users/egorr/Desktop/file.vwx"오류 : & error]; \t NSLog (@ "UTI : % @", uti); 아직도 확실하지 않은 것은 파일 아이콘의 경로를 얻는 방법입니다. – ericg
실제로 무엇을하려고합니까? 충돌하는 아이콘 또는 다양한 확장자의 파일이있는 _A_ 파일이 있습니까? 문서는 Finder.app에 의해 할당 된 아이콘을 시스템에 설치된 응용 프로그램에서 수집 한 정보 및 아이콘을 바탕으로 가져옵니다. 목표가 모든 VectorWorks 파일을 변경하는 것이라면 모두 모으는 코드를 작성해야합니다.vwx 파일을 복사 한 다음 모든 파일에'setIcon : forFile : options :'을 사용하면 다른 응용 프로그램의 내용을 변경하는 코드가 약간 생기게됩니다. – theMikeSwan