2016-01-21 10 views
1

Я создаю приложение с расширением действия. Для этого расширение должно включаться только в том случае, если пользователь выбирает одно видео или одно изображение (он может обрабатывать один файл/объект одновременно). Я получил NSExtensionActivationRule предикат от apple documentation Как это,NSExtensionActivationRule для точного одного изображения или видео - расширение приложения iOS

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" 
    )[email protected] == [email protected] 
)[email protected] == 1 

И документация говорит

это заявление, перебирает массив объектов NSExtensionItem, и во вторую очередь по массиву вложения каждого элемента расширения. Для каждого вложения предикат оценивает идентификатор однородного типа (UTI) для каждого представления в приложении. Когда представление привязки UTI соответствует любому из двух разных заданных UTI (которые вы видите в правой части каждого оператора UTI-CONFORMS-TO), собирайте этот UTI для окончательного сравнительного теста. Окончательная строка возвращает TRUE, если для расширения приложения было добавлено только одно добавочное вложение с поддерживаемым UTI.

Я изменил org.appextension.action-two и org.appextension.action-one к public.image и public.movie.

Но все же расширение включено, даже если я выбираю несколько видео или изображений. Что не так с предикатом.

ответ

0

Условие @count == [email protected] означает, что он возвращает истину, если все вложения изображения и видео, и это не имеет значения, сколько есть, чтобы ограничить его только 1 изменение этого к @count == 1