iOS Share扩展如何支持* .wav文件

时间:2015-04-09 18:33:31

标签: ios ios8 xamarin nspredicate ios8-extension

正如标题所述,我希望我的扩展程序在用户共享* .wav文件时显示

我遇到过以下Apple文档: https://developer.apple.com/library/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#//apple_ref/doc/uid/TP40014214-CH21-SW8

我试图找出如何实际使用文档中提到的内容来做到这一点。文档给我留下了我最需要的感觉,如果不是我需要的所有部分,而不是他们如何一起去。

我知道我很可能不得不建立一个" SUBQUERY(..)"声明,但它去哪了?我该如何使用它?

2 个答案:

答案 0 :(得分:5)

我最终做了以下事情:

对于NSExtensionActivationRule键,我将类型从Dictionary更改为String并输入以下字符串(您可以保留格式,不需要全部内联):

SUBQUERY (
    extensionItems,
    $extensionItem,
    SUBQUERY (
        $extensionItem.attachments,
        $attachment,
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.movie" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.audio"
    ).@count == $extensionItem.attachments.@count
).@count >= 1

你只需要:

ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.audio"

但我的扩展程序也支持电影和图像,这就是为什么它也有这些(为那些可能很好奇如何支持多个的人留下它。请注意,我决定支持更多的音频选项,而不仅仅是wave我最初在询问。可以在这里查看类型:Uniform Type Identifiers Reference

第一次计数检查可确保主机应用中的每个选定项目都符合扩展名。

第二次计数检查,最后一次用于表示扩展名接受1个或多个项目(符合)。如果您希望当前只允许1个项目由您的扩展程序处理,请输入以下内容:

).@count == 1

或者,如果您想允许多个具有上限的项目:

).@count < 4

).@count <= 3

答案 1 :(得分:0)

我想有人想知道没有外部 SUBQUERY 的单个项目会是什么样子:

SUBQUERY(
    $extensionItem.attachments, 
    $attachment, 
    ANY $attachment.registeredTypeIdentifiers 
    UTI-CONFORMS-TO "public.audio"
).@count = 1

只需将 UTI-CONFORMS-TO "public.audio" 替换为 UTI-CONFORMS-TO "public.image"UTI-CONFORMS-TO "public.movie"