Отделение NSPasteboardItem от картона

То, что я пытаюсь сделать на высоком уровне, - это сохранить текущие данные, которые находятся на монтажном столе (данные любого типа), используя этот код, который я считаю правильным:

- (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 ответов

Другие вопросы по тегам