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

NSExtensionActivationRule,用于精确的一个图像或视频-iOS应用程序扩展,ios,ios-app-extension,ios-extensions,Ios,Ios App Extension,Ios Extensions,我正在构建一个带有操作扩展的应用程序。为此,只有当用户选择一个视频或一个图像(它可以一次处理一个文件/对象)时,扩展才应该启用。我从中获得了NSExtensionActivationRule谓词 像这样, SUBQUERY ( extensionItems, $extensionItem, SUBQUERY ( $extensionItem.attachments, $attachment, ANY $attachment.

我正在构建一个带有操作扩展的应用程序。为此,只有当用户选择一个视频或一个图像(它可以一次处理一个文件/对象)时,扩展才应该启用。我从中获得了
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对象数组,其次遍历每个扩展项中的attachments数组。对于每个附件,谓词计算附件中每个表示的统一类型标识符(UTI)。当附件表示UTI符合两个不同的指定UTI中的任何一个(您可以在每个UTI-COMPASS-to运算符的右侧看到)时,收集该UTI以进行最终比较测试。如果应用程序扩展只提供了一个带有受支持UTI的扩展项附件,则最后一行返回TRUE

我将
org.appextension.action二
org.appextension.action一
更改为
public.image
public.movie


但即使我选择了多个视频或图像,扩展仍处于启用状态。谓词有什么问题。

条件
@count==$extensionItem.attachments.@count
表示如果所有附件都是图像和视频,则返回true,而不管有多少附件,若要将其限制为仅1,请将其更改为
@count==1

条件
@count==$extensionItem.attachments.@count
意味着如果所有附件都是图像和视频,并且不管有多少附件,它将返回true,若要将其限制为仅1,请将其更改为
@count==1