Я создаю приложение с расширением действия. Для этого расширение должно включаться только в том случае, если пользователь выбирает одно видео или одно изображение (оно может обрабатывать один файл/объект одновременно). Я получил предикат NSExtensionActivationRule
из документация Apple Вот так,
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 для окончательного сравнительного теста. Последняя строка возвращает TRUE, если расширению приложения было предоставлено ровно одно вложение элемента расширения с поддерживаемым UTI.
Я изменил org.appextension.action-two
и org.appextension.action-one
на public.image
и public.movie
.
Но все же расширение включено, даже если я выбираю несколько видео или изображений. Что не так с предикатом.