我是Swift和iOS开发的新手,遇到了一个我应该预见到的绊脚石。
我实现了一个名为Media
的类,它可以包含Data
或Url
,这取决于它包含的媒体类型-目前是音频和照片,但也将包括视频。
我已经设法让它允许共享音频没有问题,但当我去实现图像共享时,我意识到transferRepresentation
的实现是static
,所以我没有办法有条件地指定格式或它是否使用我设置的Data
或Url
属性。
所以问题是,这是可能的,或者我需要将我的媒体类型分成不同的类来允许它工作吗?
下面是这个类的一个部分来展示我所做的工作。
@Model
class Media: Transferable {
@Attribute(.externalStorage) var file: Data? = nil
var url: String? = nil
public static var transferRepresentation: some TransferRepresentation {
FileRepresentation(exportedContentType: .wav) { audio in
SentTransferredFile(URL(string: "\(AudioHelper.getDocumentsDirectory())\(audio.url!)")!)
}
}
}
字符串
这是我目前为止的设置,因此需要寻找任何可能的选项,或者如果我需要重新设计类的设置方式,则不使用Media
类作为全部内容
1条答案
按热度按时间2izufjch1#
尽管
transferRepresentation
属性是静态的,但几乎所有在其中调用的内容都将提供一个闭包,为您提供Transferable
项的示例,如FileRepresentation
的初始化器,以及exportingCondition
-用于使表示具有条件的专用方法。字符串
旁注:考虑使用
init(string:relativeTo:)
为文件创建URL。