正如标题所述,我希望我的扩展程序在用户共享* .wav文件时显示
我试图找出如何实际使用文档中提到的内容来做到这一点。文档给我留下了我最需要的感觉,如果不是我需要的所有部分,而不是他们如何一起去。
我知道我很可能不得不建立一个" SUBQUERY(..)"声明,但它去哪了?我该如何使用它?
答案 0 :(得分:5)
我最终做了以下事情:
对于NSExtensionActivationRule键,我将类型从Dictionary更改为String并输入以下字符串(您可以保留格式,不需要全部内联):
SUBQUERY (
extensionItems,
$extensionItem,
SUBQUERY (
$extensionItem.attachments,
$attachment,
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image" ||
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.movie" ||
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.audio"
).@count == $extensionItem.attachments.@count
).@count >= 1
你只需要:
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.audio"
但我的扩展程序也支持电影和图像,这就是为什么它也有这些(为那些可能很好奇如何支持多个的人留下它。请注意,我决定支持更多的音频选项,而不仅仅是wave我最初在询问。可以在这里查看类型:Uniform Type Identifiers Reference
第一次计数检查可确保主机应用中的每个选定项目都符合扩展名。
第二次计数检查,最后一次用于表示扩展名接受1个或多个项目(符合)。如果您希望当前只允许1个项目由您的扩展程序处理,请输入以下内容:
).@count == 1
或者,如果您想允许多个具有上限的项目:
).@count < 4
或
).@count <= 3
答案 1 :(得分:0)
我想有人想知道没有外部 SUBQUERY
的单个项目会是什么样子:
SUBQUERY(
$extensionItem.attachments,
$attachment,
ANY $attachment.registeredTypeIdentifiers
UTI-CONFORMS-TO "public.audio"
).@count = 1
只需将 UTI-CONFORMS-TO "public.audio"
替换为 UTI-CONFORMS-TO "public.image"
或 UTI-CONFORMS-TO "public.movie"
。