0

一般的な NSPasteboardの完全なコンテンツを、指定された名前のペーストボードにコピーする必要があります。私はこのコードを試しました:

- (void)copyFromGeneralPasteboard {
NSMutableArray *archive = [[NSMutableArray alloc] init];
NSArray *typeArray = [[NSPasteboard generalPasteboard] types];
NSPasteboard *myPasteboard = [NSPasteboard pasteboardWithName:@"SpecialPb"];
[myPasteboard declareTypes:typeArray owner:self];

for (NSPasteboardItem *item in [[NSPasteboard generalPasteboard] pasteboardItems])
{
    NSPasteboardItem *archivedItem = [[NSPasteboardItem alloc] init];
    for (NSString *type in [item types])
    {
        NSData *data=[[item dataForType:type] mutableCopy];
        if (data) {
            [archivedItem setData:data forType:type];
        }
    }
    [archive addObject:archivedItem];
}
[[NSPasteboard generalPasteboard] clearContents];
[myPasteboard writeObjects:archive];
[archive removeAllObjects];}

このコードを使用して確認しています。

- (void)SendToGeneralPasteboard {
NSMutableArray *archive = [[NSMutableArray alloc] init];
for (NSPasteboardItem *item in [[NSPasteboard pasteboardWithName:@"SpecialPb"] pasteboardItems])
{
    NSPasteboardItem *archivedItem = [[NSPasteboardItem alloc] init];
    for (NSString *type in [item types])
    {
        NSData *data=[[item dataForType:type] mutableCopy];
        if (data) {
            [archivedItem setData:data forType:type];
        }
    }
    [archive addObject:archivedItem];
}
[[NSPasteboard generalPasteboard] writeObjects:archive];}

そこで、IWork Pages を使用してテストを行ったところ、テキストと属性付きテキストで動作しました。しかし、テキストと画像で実行しようとすると、プログラムはテキストをコピーして貼り付けるだけです。その上、画像だけを使って実行しようとしましたが、うまくいきました。私のコードをあらゆる種類のデータで使用する方法を教えてください。ありがとう。

4

1 に答える 1