【发布时间】:2011-10-04 05:03:43
【问题描述】:
我创建了一个应用,它有一个代表一系列文件的 NSTableView。由此,我希望能够将一行(即文件名)从我的 NSTableView 拖到 Finder,并在该文件夹中创建文件。但是,我无法解决的一点是我需要修改原始文件的内容,然后才能将其复制到 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 发送数据?有没有办法解决这个问题?
【问题讨论】:
标签: objective-c cocoa macos drag-and-drop