общий подзапрос расширения для ограничения типов элементов

#ios #objective-c #nspredicate #ios8-share-extension

#iOS #objective-c #nspredicate #ios8-share-extension

Вопрос:

 SUBQUERY(
extensionItems, 
$extensionItem, 
SUBQUERY(
$extensionItem.attachments, 
$attachment, 
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.adobe.pdf"
).@count == 1
).@count == 1 
OR 
SUBQUERY(
extensionItems, 
$extensionItem, 
SUBQUERY(
$extensionItem.attachments, 
$attachment, 
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image"
).@count amp;<= 10
).@count == 1
OR 
SUBQUERY(
extensionItems, 
$extensionItem, 
SUBQUERY(
$extensionItem.attachments, 
$attachment, 
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.url"
).@count == 1
).@count == 1
  

Я хочу только поддерживать images, pdf and url .

Но share extension отображается во всех типах. т. Е. Видео, контакты и т. Д.

Ответ №1:

Это из-за строки:

 ).@count amp;<= 10
  

Он возвращает true for 0 , что означает true отсутствие совпадения, поэтому ваше расширение будет возвращаться true для каждого типа. Измените эту строку на следующую, если вы хотите ограничить количество изображений 10.

 ).@count == $extensionItem.attachments.@count AND $extensionItem.attachments.@count amp;<= 10"