NSExtensionActivationRule用于完整的一个图像或视频 - iOS App扩展程序

时间:2016-01-21 06:43:46

标签: ios ios-app-extension ios-extensions

我正在构建一个带有动作扩展名的应用。为此,只有当用户选择一个视频或一个图像(它可以一次处理一个文件/对象)时,才能启用扩展。我从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-twoorg.appextension.action-one更改为public.imagepublic.movie

但即使我选择多个视频或图像,仍会启用扩展程序。谓词有什么问题。

1 个答案:

答案 0 :(得分:0)

条件@count == $extensionItem.attachments.@count表示如果所有附件都是图片和视频,并且无论有多少附件,它将返回true,将其限制为仅1将其更改为@count == 1