gpt4 book ai didi

objective-c - 如何获取粘贴板条目的类型?

转载 作者:行者123 更新时间:2023-12-03 16:26:13 32 4
gpt4 key购买 nike

我有一个 NSPasteboard:

NSPasteboard *pasteboard;

并通过以下方式获取它:

pasteboard = [[NSPasteboard generalPasteboard] retain];

现在我想确定最后一个条目是什么类型,例如格式化文本或图像等,如果是文本,则获取其内容等。

如何找出粘贴板中数据保存的类型?

我记录了[粘贴板类型]的输出:

2011-05-07 20:13:30.491 YourApp[15335:903] Pasteboard changed: (
"public.utf8-plain-text",
NSStringPboardType,
"dyn.ah62d4rv4gu8y63n2nuuhg5pbsm4ca6dbsr4gnkduqf31k3pcr7u1e3basv61a3k",
"NeXT smart paste pasteboard type"
)

但我不知道如何检查它是文本还是其他内容......

最佳答案

Pasteboard Programming Guide 中对此进行了全面介绍。 。执行此操作的标准方法是列出您感兴趣的类型,然后要求粘贴板为您提供这些类型。如果它有这些类型的对象,你就会得到它们。否则,你什么也得不到。

NSPasteboard * pboard = [NSPasteboard generalPasteboard]; 
NSArray * interestingTypes;
interestingTypes = [NSArray arrayWithObjects:[NSAttributedString class],
[NSString class], nil];
NSArray * pboardContents = [pboard readObjectsForClasses:interestingTypes
options:nil];
if( pboardContents ) {
// Use the contents
}

您还可以使用不同的类型列表进行多次查询:

NSArray * imgType = [NSArray arrayWithObject:[NSImage class]];
NSArray * strType = [NSArray arrayWithObject:[NSString class]];

NSArray * pboardImg = [pboard readObjectsForClasses:imgType
options:nil];
NSArray * pboardStr = [pboard readObjectsForClasses:strType
options:nil];

if( pboardImg ){
// Got an image!
}

if( pboardStr ){
// Got a string!
}

您也可以简单地询问粘贴板是否它具有您感兴趣的类型之一,而无需实际获取对象。这将为您提供一个简单的 YESNO:

[pboard canReadObjectForClasses:interestingTypes
options:nil];

请注意,Snow Leopard 中的粘贴板处理方式发生了变化,因此不幸的是,Leopard 中的情况完全不同。

关于objective-c - 如何获取粘贴板条目的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5923138/

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