NSExtensionActivationRule确切的一个图像或视频 - iOS应用程序扩展

问题描述:

我正在构建一个带有动作扩展的应用程序。为此,只有当用户选择一个视频或一个图像(它可以一次处理一个文件/对象)时,扩展才能启用。我从apple documentation 像这样NSExtensionActivationRule谓词,NSExtensionActivationRule确切的一个图像或视频 - iOS应用程序扩展

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" 
    )[email protected] == [email protected] 
)[email protected] == 1 

和文档说

这种过度NSExtensionItem对象的数组语句迭代,其次在每个扩展项附件阵列。对于每个附件,谓词评估附件中每个表示的统一类型标识符(UTI)。当附件表示UTI符合两个不同的指定UTI(您在每个UTI-CONFORMS-TO运算符的右侧看到)中的任何一个时,收集该UTI进行最终比较测试。如果应用程序扩展只有一个支持UTI的扩展项目附件,则最后一行返回TRUE。

我改变org.appextension.action-twoorg.appextension.action-onepublic.imagepublic.movie

但即使选择多个视频或图像,仍然可以启用扩展功能。谓词有什么问题。

条件@count == [email protected]意味着,如果所有的附件是图像和视频,它将返回true,并不要紧究竟有多少,将其限制到只有1更改为@count == 1