【问题标题】:NSExtensionActivationRule for exact one image or video - iOS App extensionNSExtensionActivationRule 用于精确的一个图像或视频 - iOS 应用程序扩展
【发布时间】:2016-01-21 06:43:46
【问题描述】:

我正在构建一个带有操作扩展的应用。为此,只有当用户选择一个视频或一个图像时,扩展才应该启用(它可以一次处理一个文件/对象)。我从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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-08
      • 2021-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-24
      相关资源
      最近更新 更多