NSExtension - Share - 将类型限制为视频或图片
NSExtension - Share - Limit type only to video or only to pictures
我的应用程序中有一个扩展程序,允许用户选择他们 'Photos/Pictures' 应用程序的图片或视频以在我的应用程序中发布。
我通过执行以下操作将图片数量限制为 20,将视频数量限制为 1:
但是,我希望我的用户 select 多张图片 或 只有一个视频,这在这种配置下是不可能的。
我读过这个post:
他们解释说我可以自定义验证规则,但我不知道如何编写。是否有任何其他激活参数或有人可以帮助编写规则吗?
提前致谢!
Apple 提供了一个选项让您随心所欲地做事。我们可以在这里查看文档:
我把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>
我没有测试此代码,它可能无法完全工作,但它会为您指明正确的方向。
这是一个有效的答案,奇怪的是我没有设法使逻辑条件 (AND / OR) 在单个子查询中起作用,所以我不得不将其拆分:
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
我的应用程序中有一个扩展程序,允许用户选择他们 'Photos/Pictures' 应用程序的图片或视频以在我的应用程序中发布。
我通过执行以下操作将图片数量限制为 20,将视频数量限制为 1:
但是,我希望我的用户 select 多张图片 或 只有一个视频,这在这种配置下是不可能的。
我读过这个post:
他们解释说我可以自定义验证规则,但我不知道如何编写。是否有任何其他激活参数或有人可以帮助编写规则吗?
提前致谢!
Apple 提供了一个选项让您随心所欲地做事。我们可以在这里查看文档:
我把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>
我没有测试此代码,它可能无法完全工作,但它会为您指明正确的方向。
这是一个有效的答案,奇怪的是我没有设法使逻辑条件 (AND / OR) 在单个子查询中起作用,所以我不得不将其拆分:
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