2009-06-30 3 views
5

현재 프로젝트에서 일하고 있는데 com.apple.sidebarlists.plist 파일에 추가 한 다음 사이드 바 항목을 추가 할 수는 있지만 Finder를 다시 시작하면 할당 된 폴더 아이콘을 사용하여 폴더 아이콘을 표시하는 방법을 알 수없는 것처럼 보입니다. 사용자 정의 아이콘.폴더에 대한 사용자 지정 아이콘을 사용해야 할 때 프로그램 방식으로 Finder 사이드 바에 폴더 아이콘을 저장하려면 어떻게해야합니까?

누구나 나를 이렇게 만들 링크 또는 해결책을 가르쳐 줄 수 있습니까? 미리 감사드립니다.

답변

6

순수 코코아를 사용하여이를 수행 할 수있는 지원 방법이 없습니다. 대신 LSSharedFileList API를 사용하십시오. 사이드 바 목록을 관리하는 지원되는 방법이며 항목을 삽입 할 때 아이콘 서비스에서 IconRef로 사용자 정의 아이콘을 제공 할 수 있습니다.

+0

샌드 박스에서 실행 중일 때이 API를 사용할 수 있습니까? –

+0

@DavidKocher 불행히도, 아니요. – dejuknow

+0

@dejuknow : 틀렸어. 이를 위해 com.apple.coreservices.sharedlileslistd.xpc 서비스를 사용합니다. 기본적으로 NSXPCServiceConnection을 만들고, 추가 한 FileURL에 대해 SFLListItem을 사용하여 SFLListChange 객체를 만들고 icons 속성이 포함 된 bookmarkdata를 만들거나 (또는 ​​기존 FsRef/UrlBookmarkData /를 가져 와서) XPC 서비스를 통해 SFLList에 변경 내용을 게시합니다. 실망. 자세한 내용은 앱 샌드 박스 가이드를 참조하세요. coreservices/sharedfileslist.framework 헤더 용 Google (또는 nm/otool/classdump로 덤프). 행운을 빕니다. – kervich

0

나는 너무 명백해서하지 않으려 고 완고했습니다. 내가 한 :

[[NSWokspace sharedWorkspace] setIcon:someIcon forFile:someFile options:0]; 

폴더의 이미지 아이콘을 설정합니다. 그때부터 나는 com.apple.sidebarlists.plistNSUserDefaults을 붙이고 Apple Events를 통해 Finder를 다시 시작했습니다. 그것은 모든 것을 작동하게 만들었습니다.

+0

그렇게하지 마십시오. 피터 호세이가 한 말대로해라. Launch Services API를 사용하지 않을 이유가 없습니다. –

+0

음 ... NSWokspace ... 맛있겠 네. –

1

나는 아이콘에 대해 알고하지 않습니다하지만 난 여기에 해당 오픈 소스 인 EBLaunchServices 래퍼를 사용하여 사이드 바 항목을 추가 : 매우 쉽게 쓸 수

https://github.com/Eric-Bro/EBLaunchServices

. 예를 들어, 호출 된 사이드 바에 OSXFUSE 볼륨을 추가하려면 다음을 호출하십시오.

NSURL* volumeUrl = [NSURL fileURLWithPath:@"/Volumes/MyVolume"]; 
[EBLaunchServices addItemWithURL:volumeUrl toList:kLSSharedFileListFavoriteVolumes]; 
관련 문제