NSExtension - Share - тип ограничения только для видео или только для изображений - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть расширение в моем приложении, которое позволяет пользователям выбирать фотографии или видео из своего приложения «Фотографии / рисунки» для публикации в моем приложении.

Я ограничиваю количество изображений до 20 и ограничение довидео к 1, выполнив следующие действия: enter image description here

Однако я хочу, чтобы мои пользователи выбирали несколько фотографий или только одно видео, что невозможно с этимКонфигурация.

Я прочитал этот пост: NSExtension Share Предел расширения Количество фотографий

Они объясняют, что я могу сделать пользовательское правило проверки, но я не знаю, как написатьЭто.Есть ли другой параметр активации или кто-то может помочь с написанием правила?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 21 марта 2019

Вот правильный ответ, как ни странно, мне не удалось заставить логические условия (И / ИЛИ) работать в одном подзапросе, поэтому мне пришлось разделить его:

SUBQUERY (
    extensionItems,
    $extensionItem,
    SUBQUERY(
        $extensionItem.attachments,
        $attachment,
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.movie"
    ).@count == 1
    AND
    SUBQUERY(
        $extensionItem.attachments,
        $attachment,
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image"
    ).@count == 0
).@count == 1
OR
SUBQUERY (
    extensionItems,
    $extensionItem,
    SUBQUERY(
        $extensionItem.attachments,
        $attachment,
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.movie"
    ).@count == 0
    AND
    SUBQUERY(
        $extensionItem.attachments,
        $attachment,
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image"
    ).@count <= 20
).@count >= 1
0 голосов
/ 27 февраля 2019

Apple предлагает возможность делать то, что вы хотите.Мы можем взглянуть на документы здесь:

https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#//apple_ref/doc/uid/TP40014214-CH21-SW8

Я изменил элементы UTI-CONFORMS-TO для видео и изображений, и счет немного:

SUBQUERY (
    extensionItems,
    $extensionItem,
    SUBQUERY (
        $extensionItem.attachments,
        $attachment,
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image"
    ).@count <= 20
).@count >= 1
OR
SUBQUERY (
    extensionItems,
    $extensionItem,
    SUBQUERY(
        $extensionItem.attachments,
        $attachment,
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.video"
    ).@count == 1
).@count == 1

Этот запрос должен ограничивать выбор только 1 видео или от 1 до 20 изображений.Обратите внимание, что вы должны задать этот запрос следующим образом:

<key>NSExtensionAttributes</key>
<dict>
    <key>NSExtensionActivationRule</key>
    <string>
    --- SUBQUERY HERE ---
    </string>
</dict>

Я не тестировал этот код, и он может работать не полностью, но он укажет вам правильное направление.

...