我正在构建一个带有动作扩展名的应用。为此,只有当用户选择一个视频或一个图像(它可以一次处理一个文件/对象)时,才能启用扩展。我从apple documentation获得了NSExtensionActivationRule
谓词
像这样,
SUBQUERY (
extensionItems,
$extensionItem,
SUBQUERY (
$extensionItem.attachments,
$attachment,
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "org.appextension.action-one" ||
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "org.appextension.action-two"
).@count == $extensionItem.attachments.@count
).@count == 1
文档说
此语句遍历NSExtensionItem对象数组,其次遍历每个扩展项中的附件数组。对于每个附件,谓词评估附件中每个表示的统一类型标识符(UTI)。当附件表示UTI符合两个不同的指定UTI中的任何一个(您在每个UTI-CONFORMS-TO操作符的右侧看到)时,收集该UTI以进行最终比较测试。如果应用程序扩展名仅提供了一个支持UTI的扩展项附件,则最后一行返回TRUE。
我将org.appextension.action-two
和org.appextension.action-one
更改为public.image
和public.movie
。
但即使我选择多个视频或图像,仍会启用扩展程序。谓词有什么问题。
答案 0 :(得分:0)
条件@count == $extensionItem.attachments.@count
表示如果所有附件都是图片和视频,并且无论有多少附件,它将返回true,将其限制为仅1将其更改为@count == 1