保留 kPasteboardTypeFileURLPromise 时的错误处理
Posted
技术标签:
【中文标题】保留 kPasteboardTypeFileURLPromise 时的错误处理【英文标题】:Error handling when keeping kPasteboardTypeFileURLPromise 【发布时间】:2013-08-29 09:32:41 【问题描述】:我的 Mac 应用程序应该允许拖放 kPasteboardTypeFileURLPromise 以从粘贴板获取文件承诺。
据我了解,每个 NSPasteboardItem 的可用类型都应该有 kPasteboardTypeFileURLPromise。
与拖动目的地处理的 NSURL 不同,kPasteboardTypeFileURLPromise 由拖动源写入到拖动目的地设置的目标位置。
但是,当源未能履行承诺时,似乎无法将错误及其用户信息传递给目标以进行恢复(例如 NSRecoveryAttempterErrorKey 等)。
在拖动 kPasteboardTypeFileURLPromise 时处理错误的最佳做法是什么? 是否应该由拖拽源来处理?
与由目标处理错误的拖动 NSURL 相比,它可能会导致一些不一致。
【问题讨论】:
【参考方案1】:如果您需要将文件复制到剪贴板,请使用:
NSPasteboard *pasteBoard = [NSPasteboard generalPasteboard];
[pasteBoard declareTypes:[NSArray arrayWithObjects:NSStringPboardType, NSFilenamesPboardType, nil] owner:nil];
[pasteBoard setString:self.fullpath forType:NSStringPboardType]; // copy file path as string
[pasteBoard setPropertyList:@[self.fullpath] forType:NSFilenamesPboardType]; // copy file link
【讨论】:
以上是关于保留 kPasteboardTypeFileURLPromise 时的错误处理的主要内容,如果未能解决你的问题,请参考以下文章