【问题标题】:Obtain clipboard's object from NSPasteboard mac从 NSPasteboard mac 获取剪贴板的对象
【发布时间】:2018-08-01 18:49:12
【问题描述】:

我需要获取 NSPasteboard 的对象并将其存储在某处,以便稍后将其放回剪贴板。我现在只使用 text 属性执行此操作。我想知道如何对任何对象执行此操作(例如:复制文件)。 到目前为止,这是我获取文本并将其放回原处的代码:

NSString *pasteboardString;

//Save the value of the pasteboard
NSPasteboard *pasteboard= [NSPasteboard generalPasteboard];
pasteboardString= [pasteboard stringForType:NSStringPboardType];

//Clear the pasteboard
[pasteboard clearContents];

//Do some stuff with clipboard

//Write the old object back
if(pasteboardString!= NULL || pasteboardString.length != 0){
    [pasteboard declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:nil];
    [pasteboard setString:pasteboardString forType:NSStringPboardType];
}

【问题讨论】:

  • 您是否尝试过获取所有对象?
  • 不,根本没有文档,苹果网站也无济于事。你为什么认为我在这里?
  • NSPasteboard。获取types,读取数据:dataForType:,写入数据setData:forType:。承诺将是一个问题。隐藏在档案中:Pasteboard Programming Guide.
  • 谢谢,我很幸运找到了解决方案,就像你说的那样。

标签: objective-c macos clipboard nspasteboard


【解决方案1】:

我找到的最简单的方法是获取所有NSPasteboardItems 的数组:

- (NSArray *)readFromPasteBoard
{
    NSMutableArray *pasteboardItems = [NSMutableArray array];
    for (NSPasteboardItem *item in [pasteboard pasteboardItems]) {
        //Create new data holder
        NSPasteboardItem *dataHolder = [[NSPasteboardItem alloc] init];
        //For each type in the pasteboard's items
        for (NSString *type in [item types]) {
            //Get each type's data and add it to the new dataholder
            NSData *data = [[item dataForType:type] mutableCopy];
            if (data) {
                [dataHolder setData:data forType:type];
            }
        }
        [pasteboardItems addObject:dataHolder];
    }
    return pasteboardItems;
}

从此页面:Dissociating NSPasteboardItem from pasteboard

然后,您可以在剪贴板操作后使用相同的数组写回粘贴板:[pasteboard writeObjects:arrayPasteboardItems];

这将放回之前复制的任何对象(甚至是文件、文件夹等)。

【讨论】:

    猜你喜欢
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多