Ios UIActivityItemProvider是否返回多个对象或什么都不返回?

Ios UIActivityItemProvider是否返回多个对象或什么都不返回?,ios,swift,uiactivityviewcontroller,Ios,Swift,Uiactivityviewcontroller,我有一个Book类,我想让我的用户分享他们每本书的进度。为此,我提供了一个UIActivityViewController,但我想为Facebook、Twitter等添加不同的文本,因此我让Book符合UIActivityItemSource协议,然后我可以根据activityType为其方法返回不同的值。到目前为止还不错 现在,当用户选择Facebook或Twitter时,我还想分享一张图片,但其他所有选项都只需要文本。但是,UIActivityItemSource中的方法只允许我返回一个对象

我有一个
Book
类,我想让我的用户分享他们每本书的进度。为此,我提供了一个
UIActivityViewController
,但我想为Facebook、Twitter等添加不同的文本,因此我让
Book
符合
UIActivityItemSource
协议,然后我可以根据
activityType
为其方法返回不同的值。到目前为止还不错

现在,当用户选择Facebook或Twitter时,我还想分享一张图片,但其他所有选项都只需要文本。但是,
UIActivityItemSource
中的方法只允许我返回一个对象。要共享字符串和图像,我似乎必须将它们作为不同的活动项添加,但我不知道用户将选择哪个
activityType
来决定是否应包含图像

那么,如何根据
activityType
共享不同种类和值的不同数量的对象呢

提前感谢,

丹尼尔



编辑:现在我正试图用
UIActivityItemProvider
来实现这一点……问题是,有时我只想共享一些文本,有时我也想共享一个图像。因此,我的
UIActivityItemProvider
必须有条件地返回多个对象(有时返回图像,有时不返回),或者我需要使用多个提供程序,有时让图像的提供程序返回nil,但这似乎是不可能的。现在怎么办?

我找到了解决问题的方法。虽然这不太好,所以我不会接受这个答案,但我会把它留在这里,以防它对别人有帮助

我不能让
UIActivityItemProvider
返回nil,但我可以让它返回一个空字符串,所以这就是我所做的–对于
activityTypes
我想要一个图像,我返回一个图像,对于那些我不想要的,我返回一个空字符串。然后我有另一个文本提供者

但也有一些缺点。返回一个空字符串会创建一个新行,这不是一个交易破坏者,但很烦人。此外,始终会有一个字符串项,即使我为我的文本提供程序返回一个空字符串,因此保存到相机卷之类的选项将永远不可用


我现在就这么做,但如果有人有更好的建议,请告诉我。

我找到了解决问题的方法。虽然这不太好,所以我不会接受这个答案,但我会把它留在这里,以防它对别人有帮助

我不能让
UIActivityItemProvider
返回nil,但我可以让它返回一个空字符串,所以这就是我所做的–对于
activityTypes
我想要一个图像,我返回一个图像,对于那些我不想要的,我返回一个空字符串。然后我有另一个文本提供者

但也有一些缺点。返回一个空字符串会创建一个新行,这不是一个交易破坏者,但很烦人。此外,始终会有一个字符串项,即使我为我的文本提供程序返回一个空字符串,因此保存到相机卷之类的选项将永远不可用


我现在就这么做,但如果有人有更好的建议,请告诉我。

为什么不能返回null?我刚试过,似乎没有问题。。。(我返回[NSNull null]因为它更安全,但它也可以使用just play old null)@Pochi,因为
UIActivityItemProvider.item
不是可选的:是的,它没有标记为可选,但没有指定为非空。我在appdeveloper论坛上也发现了一个类似的问题,有人还建议只返回null。在我自己尝试之后,似乎没有任何问题。@Pochi哦,好吧……所以我认为要按照您在Swift中的建议执行,我必须返回NSNull()。我现在正在旅行,但我一有机会就会调查。谢谢为什么不能返回null?我刚试过,似乎没有问题。。。(我返回[NSNull null]因为它更安全,但它也可以使用just play old null)@Pochi,因为
UIActivityItemProvider.item
不是可选的:是的,它没有标记为可选,但没有指定为非空。我在appdeveloper论坛上也发现了一个类似的问题,有人还建议只返回null。在我自己尝试之后,似乎没有任何问题。@Pochi哦,好吧……所以我认为要按照您在Swift中的建议执行,我必须返回NSNull()。我现在正在旅行,但我一有机会就会调查。谢谢