gpt4 book ai didi

cocoa - 取消过滤 NSPasteboard

转载 作者:行者123 更新时间:2023-12-03 16:11:23 27 4
gpt4 key购买 nike

有没有办法取消对 NSPasteboard 的过滤,以获取源应用程序明确声明的它将提供的内容?

我正在尝试在我的应用程序中序列化粘贴板数据。当另一个应用程序将 RTF 文件放在粘贴板上,然后我询问可用类型时,我会得到十一种不同风格的 RTF,从原始 RTF 到纯字符串再到 dyn.* 值。

将所有数据保存到 plist 或磁盘上的原始数据通常不是问题,因为它非常小,但是当将任何相当大尺寸的图像放置在粘贴板上时,生成的输出可能会大数十倍比源数据(通过过滤提供多种类型的 TIFF 和 PICT 数据)。

如果可能的话,我希望能够保留原始应用程序提供的内容。

<小时/>

约翰,你比我自己或与我一起工作的那位自从恐龙在地球上漫游以来就一直在进行 Mac 编程的绅士要敏锐得多。我们俩都没有注意到你突出显示的文字……我也不知道为什么。显然,在这个问题上开始的时间太长了。

虽然我接受你的答案作为正确答案,但它并没有完全回答我原来的问题。我正在寻找一种方法来识别可以变成其他口味的口味,只需将它们放在粘贴板上并且即可知道提供商最初提供了哪些类型。虽然遍历类型列表将为我提供提供它们的应用程序的首选顺序,但它不会告诉我可以安全地忽略哪些类型,因为稍后重新填充粘贴板时将重新创建它们。

我得出的结论是,没有一个“好的”方法可以做到这一点。 [NSPasteboardclarifiedTypesFromOwner] 会很棒,但它不存在。

最佳答案

-[NSPasteboard types] 将返回剪贴板上数据的所有可用类型,但它应该返回它们 "in the order they were declared."

-[NSPasteboard declareTypes:owner:] 的文档说 "the types should be ordered according to the preference of the source application."

因此,正确实现的粘贴板所有者应该将最丰富的内容表示形式(可能是原始内容)声明为第一种类型;所以合理的单一表示应该是:

[pb dataForType:[[pb types] objectAtIndex:0]]

关于cocoa - 取消过滤 NSPasteboard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54760/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com