将NSPasteboardItem与粘贴板分离

时间:2013-03-29 03:32:14

标签: objective-c macos cocoa exception nspasteboard

我想在高级别上做的是使用此代码存储粘贴板上的当前数据(任何类型的数据),我认为这是正确的:

- (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;
}

然后我存储pasteboardItems供以后使用。我的问题是,当我尝试将相同的数据写入粘贴板时:

- (void)writeToPasteBoard:(NSArray *)objectsToWrite
{
    [pasteboard clearContents];
    [pasteboard writeObjects:objectsToWrite];
}

我正在做的是使用我之前制作的NSPasteboardItem传入一个数组。然后我得到了这个错误:

Cannot write pasteboard item <NSPasteboardItem: 0x101a11540>.  It is already associated   
with another pasteboard.

我有点困惑,因为我试图写入粘贴板的NSPasteboardItem与任何粘贴板都没有关联,因为我自己实例化它并且从未从粘贴板中检索它。感谢您的帮助,如果您需要更多详细信息,请与我们联系。

0 个答案:

没有答案