一連のファイルを表すNSTableViewを持つアプリケーションを作成しました。これで、NSTableViewからFinderに行(ファイル名)をドラッグして、そのフォルダにファイルを作成できるようにしたいと考えています。しかし、私がうまくいかないのは、Finderにコピーされる前に元のファイルの内容を変更する必要があることです。NSTableViewからFinderへのドラッグドロップの問題
私は私が私のNSTableViewの外にドラッグすることができるように次の行を追加しました:
[self.tableView setDraggingSourceOperationMask:NSDragOperationCopy forLocal:NO];
をそして、私はそれが実際のファイルをコピーするために取得することができ、私が使用して、ペーストボードに現在のファイルの場所を追加提供:
- (BOOL)tableView:(NSTableView *)aTableView writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard *)pboard {
[pboard declareTypes:[NSArray arrayWithObject:NSFilenamesPboardType] owner:nil];
NSMutableArray* dragfiles = [[NSMutableArray alloc] init];
NSString* file = [self.files objectAtIndex:row];
NSString* filepath = [[[self.pathControl URL] path] stringByAppendingPathComponent:file];
[dragfiles addObject:filepath];
[pboard setPropertyList:dragfiles forType: NSFilenamesPboardType];
[dragfiles release];
}
しかし、私はファイルの内容を変更したいので、私はペーストボードにファイルパスを入れたくありません。私はNSFileWrapperを使ってみましたが、Finderはこれを有効なフォーマットとして受け入れていないようです。
私はGoogleをチェックしましたが、一時ファイルを作成してそのファイルパスを使用できるといういくつかの提案があります。しかし、これは醜いと感じます。
Finderにデータを送信することはできますか?これを解決する方法はありますか?
驚くばかりです。とても感謝しています。それを読んだ後5分で作業していた(昨晩働くために3時間を費やしていた)。私の間違いは、最初の約束のためのファイル拡張子の関連性を見逃していました。再度、感謝します。 – RichS
+1すばらしく珍しい答え! – trojanfoe