[英]ShareLink with custom type is not working
我想与 SwiftUI 中的新ShareLink共享音频文件。我有一个来自 Core Data 的录音实体,从音频文件中存储 URL,文件本身存储在 FileManger 中。 我已经制作了 Recording 以符合 Transferable 协议。
但是在 Sharelink 的行中出现了一个错误编译器:“在对初始化程序的调用中没有完全匹配”。
这是代码:
备案单位:
extension Recording {
@nonobjc public class func fetchRequest() -> NSFetchRequest<Recording> {
return NSFetchRequest<Recording>(entityName: "Recording")
}
@NSManaged public var date: Date
@NSManaged public var id: UUID
@NSManaged public var url: String
@NSManaged public var title: String
}
extension Recording : Identifiable, Transferable {
// Transferable protocol
static var containerUrl = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
public static var transferRepresentation: some TransferRepresentation {
FileRepresentation(exportedContentType: .audio) { audio in
SentTransferredFile(URL(string: audio.url)!)
}
}
}
看法:
struct AudioPlayerView: View {
@ObservedObject var recording: Recording
var body: some View {
NavigationStack {
VStack(spacing: 20){
VStack {
Text(recording.title)
.font(.title)
.bold()
Text("\(recording.date, format: .dateTime)")
.foregroundColor(.secondary)
}
}
}
.toolbar {
ToolbarItem(placement: .navigationBarLeading) {
ShareLink(item: recording) { // This line gives the error: No exact matches in call to initializer
Image(systemName: "square.and.arrow.up")
}
}
}
任何的想法? 我试图简化代码,所以如果我忘记了什么,请告诉我。
有许多 ShareLink 初始化程序,但并非所有排列都已实现。
您的初始化程序代码与“共享项目”、“共享带标签的项目”和“共享带预览的项目”下列出的代码类似,但并不完全匹配。
您需要完全匹配文档要求的内容才能编译。
一种选择是添加preview:
源自对象的数据。
ShareLink(item: recording, preview: SharePreview(Text(recording.title))) {
Image(systemName: "square.and.arrow.up")
}
否则,如果有 Label(并且没有 SharePreview), item:
必须是 String 或 URL。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.