【问题标题】:NSPasteboard: Dragging multiple objects of different typesNSPasteboard:拖动不同类型的多个对象
【发布时间】:2013-07-19 10:19:13
【问题描述】:

我想将数据从我的应用程序复制到 Numbers 或 Excel 工作表中。数据主要由整数组成,但也有一些图像。我尝试通过首先将数据放入 NSTableView 中,然后通过以下方法将数据写入粘贴板来完成此操作:

- (BOOL)tableView:(NSTableView *)tv writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard*)pboard
{
    NSArray * dataToPaste = [NSArray arrayWithObjects:[NSString stringWithFormat:@"%ld \t %ld \t %ld \t %ld \t %ld \t %ld \t %ld \t %ld \t",
                                               data1,
                                               data2,
                                               data3,
                                               data4,
                                               data5,
                                               data6,
                                               data7,
                                               data8],
                                               [An NSImage], nil];
    [pboard writeObjects:dataToPaste];
    return YES;
} 

如果我最后不添加 NSImage,所有数据都会被很好地复制,但是一旦我将 NSImage 添加到数组中,只有图像被复制,如果我添加两个 NSImage,只有第一个得到复制。我错过了什么?

任何想法将不胜感激!

编辑:顺便说一句,我刚刚意识到,即使 Numbers.app 也无法将带有文本和图像的复制单元格拖动到 Excel 和 TextEdit 中。但是,在 Numbers 文件之间有效。

【问题讨论】:

    标签: objective-c drag-and-drop nstableview export-to-excel nspasteboard


    【解决方案1】:

    NSArray * dataToPaste = [NSArray arrayWithObjects:[NSString stringWithFormat:@"%ld \t %ld \t %ld \t %ld \t %ld \t %ld \t %ld \t %ld \t % @", 数据1, 数据2, 数据3, 数据4, 数据5, 数据6, 数据7, 数据8], [一个 NSImage],无]; [板写对象:dataToPaste];

    使用 "%@" 格式说明符,例如用于图像,%ld 用于 NSnumber,这可能是解决方案。

    【讨论】:

    • 感谢您的建议。但是,对图像使用 %@ 只会生成图像的元数据: " )>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多