swift transferRepresentation中的条件FileRepresentation格式

wnavrhmk  于 5个月前  发布在  Swift
关注(0)|答案(1)|浏览(34)

我是Swift和iOS开发的新手,遇到了一个我应该预见到的绊脚石。
我实现了一个名为Media的类,它可以包含DataUrl,这取决于它包含的媒体类型-目前是音频和照片,但也将包括视频。
我已经设法让它允许共享音频没有问题,但当我去实现图像共享时,我意识到transferRepresentation的实现是static,所以我没有办法有条件地指定格式或它是否使用我设置的DataUrl属性。
所以问题是,这是可能的,或者我需要将我的媒体类型分成不同的类来允许它工作吗?
下面是这个类的一个部分来展示我所做的工作。

@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类作为全部内容

2izufjch

2izufjch1#

尽管transferRepresentation属性是静态的,但几乎所有在其中调用的内容都将提供一个闭包,为您提供Transferable项的示例,如FileRepresentation的初始化器,以及exportingCondition-用于使表示具有条件的专用方法。

FileRepresentation(exportedContentType: .wav) { audio in
    SentTransferredFile(...)
}
.exportingCondition { media in media.url != nil }

字符串
旁注:考虑使用init(string:relativeTo:)为文件创建URL。

相关问题