2013-01-06 6 views
6

10.7では動作しますが、10.8では動作しません。マウンテンライオンでこれをどのように機能させるには?Finderで表示されない10.8

-(IBAction)showTargetInFinder:(id)sender 
{ 

    NSString *linkPath = [targetField stringValue]; 
    NSWorkspace *ws = [NSWorkspace sharedWorkspace]; 
    [ws selectFile:linkPath inFileViewerRootedAtPath:nil]; 

} 
+0

のURLの代わりにパスがあるので、あなたは、ペドロビエラのソリューションで行く必要があります一般的な方法ですが、好奇心のためだけに試してみるべきもう一つの方法は、 'nil'ではなくファイルビューアのルートに' @ ""を使ってパスベースの方法を使うことです。 [ドキュメントの説明](http://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSWorkspace_Class/Reference/Reference.html#//apple_ref/occ/instm/NSWorkspace/selectFile: inFileViewerRootedAtPath :)は古風なものですが、要点は '@" "がより有用なルート値であるということです。 –

答えて

7

代わりにこのコードを使用します。

NSURL *fileURL = your file URL; 
NSArray *fileURLs = [NSArray arrayWithObjects:fileURL, nil]; 
[[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs:fileURLs]; 

をこれが10.6以降で動作します。 Finderで複数のファイルを表示して選択したい場合は、NSURLsを配列に追加すればいいです。

+0

Cool。ありがとう、ペドロ。 – Paul

+0

問題ありません!お役に立てて嬉しいです! –

+2

NSArrayに配列を作成するように依頼するのではなく、配列リテラルを使用してください: '[[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs:@ [fileURL]]' –

0

サニティチェックの観点から:[[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs:@[ fileURL ]]呼び出しを行うプロセスを実行しているユーザーにfileURLの読み取り/表示権限がない場合、このメソッドは「機能しない」と表示されます。これは(OS X 10.10.3のよう)あなたの問題である場合は、以下のようなログのコンソールをチェックし決定するため

6/18/15 10:34:46.195 AM NameOfApp[42753]: AppleEvents failed to encode extension for /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/xxxxxxxxxxx/yyyy.zzz, err=Permission denied/13 
関連する問題