ファイルパスをテキストエディタで文字列としてコピーできるようにファイルパスをコピーしたいが、ファイルをコピーするためにFinderでも利用できるようにしたい。私はSnow Leopardのガイドラインに準拠した以下のコードを書いたペーストボードのファイルパスとSnow Leopard以上のURLにコピー
(例えば使用writeObjectsコピーファイルのURLをするとき)
NSString* path1 = @"/Users/dave/trash/mas.sh";
NSString* path2 = @"/Users/dave/trash/books.xml";
NSURL* url1 = [NSURL fileURLWithPath:path1 isDirectory:NO];
NSURL* url2 = [NSURL fileURLWithPath:path2 isDirectory:NO];
NSArray* paths = [NSArray arrayWithObjects:path1, path2, nil];
NSString* pathPerLine = [paths componentsJoinedByString:@"\n"];
// Put strings on top otherwise paster app receives the url (only the first)
// Urls will be used by Finder for files operations (copy, move)
NSArray* urls = [NSArray arrayWithObjects:pathPerLine, url1, url2, nil];
NSPasteboard* pasteboard = [NSPasteboard generalPasteboard];
[pasteboard clearContents];
[pasteboard writeObjects:urls];
しかし、いくつかのエディタ上
(XCodeのような)も、URLは以下に示すように貼り付けられます( Finderは私が10.6準拠したコードを使用してファイルのURLなしでのみファイルパスを貼り付けることができますどのように/移動)/Users/dave/trash/mas.sh
/Users/dave/trash/books.xml
file://localhost/Users/dave/trash/mas.sh
file://localhost/Users/dave/trash/books.xml
をコピーするURLを正しく使用していますか?
NSFilenamesPboardType使用はがNSFilenamesPboardType 一つ以上のファイル名を指定するのNSStringオブジェクトの配列
を落胆思われます。 Mac OS X v10.6以降では、ファイルURLをペーストボードに書き込むにはwriteObjects:を使用します。 Mac OS X v10.0以降で使用できます。 NSPasteboard.hで宣言されています。
のみ、最初のパスが貼り付けられ、それがファイルに貼り付けられます:
だから、正しい動作を取得する//プレフィックスプロトコル – dafi
あなたは、このコードまたはFinderで意味しますか?私は10.8で、コードとFinderの両方ですべてのファイル名が貼り付けられ、file://プレフィックスはありません。 –
私はあなたのスニペットを実行します(最後の行でエラーを修正した後、pathsPerLineはpathPerLineです)。そして、私がKomodoEditに貼り付けると、このフォームファイルで1つのパス(期待される2つ)を取得します://localhost/Users/dave/trash/mas.sh TextWrangerのような他のアプリケーションを貼り付けてもうまく動作します – dafi