2010-12-11 7 views
0

내 코코아 애플리케이션의 목록 아래에 플러스와 마이너스 버튼이 있습니다. 더하기 버튼을 누르면 파일 선택기 대화 상자가 열리 며 파일/폴더를 선택하고 확인을 누르면 파일 대화 상자에서 반환 한 URL이 목록에 추가됩니다. 이 방법은 잘 작동하지만 사용자에게 친숙하지는 않습니다. 예를 들어, 홈 디렉토리의 폴더를 선택하면 다음과 같은 URL이 표시됩니다. file://localhost/Users/tristan/fighterjets NSTableView의 숨겨진 필드에 저장되는 '못생긴'URL 대신, 다음과 같이 좀 더 사용자 친화적 인 URL을 얻을 수 있습니까? /Users/tristan/fighterjets?코코아 친화적 인 URL

또는 가능한 경우 제외 할 파일 (아이콘이있는 파일 경로)을 선택할 수있는 Time Machine 환경 설정 같은 것조차도 가능합니다. 아마도 경로 앞에 med가 두 번째 열을 필요로하고 어떤 방식 으로든 시스템에서 아이콘을 가져 오는 것으로 가정합니다. 저도 그걸 알고 싶습니다.

+0

사용자에게 더 친숙한 URL은 전혀 URL이 아니며 '- [NSURL path]'로 쉽게 얻을 수있는 * 경로 *임을 알고 있어야합니다. –

답변

2

경로를 전혀 표시하면 안됩니다. 사용자 친화적 인 것으로 간주되지 않습니다 ... 우선, 사용자가 시스템 환경 설정에있는 언어 환경에 따라 파일 이름이 Finder에 표시되지 않을 수 있습니다. 예를 들어, Terminal.app는 일본어로 ta ミ ナ ル .app가됩니다. 항상 -[NSFileManager displayNameAtPath:]을 사용해야합니다.

파일 이름별로 파일을 정렬하려면 -[NSString localizedStandardCompare:]을 사용해야합니다.

파일과 관련된 아이콘은 -[NSWorkspace iconForFile:]을 통해 얻을 수 있습니다.

당신은 괴짜의 경로를 표시하는 경우, 또는 this reference를 참조 타임 머신의 그런 괴짜 UI에서는 사용자가 어떤 ~/ 방법을 알고 있다고 가정 할 수 있도록 더 많은 것을 위해

NSURL*fileURL= ... you get a file:// URL somehow ... 
NSString* path=[fileURL path]; // extract the file system path 
NSString* abbreviatedPath=[path stringByAbbreviatingWithTildeInPath]; // this converts /User/user to ~ 

를 사용합니다.

실제로 코코아는 처럼 보이는 NSPathControl 경로를 보여주기 위해 미리 빌드 된 UI 요소를 가지고 있습니다. 그래서 나는 그것을 사용하는 것이 좋습니다.

+0

열을 추가 할 때 유일한 문제는 아이콘이있는 경로 앞에있는 것은 목록에 파일을 저장할 때 필요합니다. 분명히 NSImage를 NSDictionary에 쓸 수 없습니다. 이 이미지가 있더라도 목록을 저장하는 방법에 대해 어떻게 생각하나요? –

+0

이미지를 저장하지 않고 전체 파일 URL 또는 전체 경로를 저장하기 만하면됩니다. 이미지와 표시된 문자열은 매번 재생성 될 수 있습니다. 보시다시피, 모든 것을 저장할 필요는 없습니다 ... 중요한 정보를 저장하기 만하면, 물건을 다시 만드는 데 필요합니다. – Yuji

+0

어떻게 구현할 수 있는지 보겠습니다. plist에서 배열을로드 할 때 새 NSMutableArray를 만들고 NSMutableDictionary 객체를 새로 추가하여 거기에 아이콘을 다시 만들 수있었습니다. 하지만 NSMutableDictionary가 배열의 이미지 부분을 저장하지 못하게하는 방법에 대한 문제가 있습니다 ... 혼란 스럽습니다. 어쩌면 나는 커피 한잔과 쿠키 몇 개를 먹은 후에 그것을 알아낼 수있을 것입니다. = 편집 : 나는 그것을 얻었습니다. 여러분의 해결책과 영감을 위해 대단히 감사합니다;) –

관련 문제