Hi everyone!
I want to share audio files with the new ShareLink in SwiftUI. I've a Recording entity from Core Data, witch store the URL from the audio file and the file itself is store in the FileManger. I already make Recording to conform Transferable protocol. But in the line of the Sharelink appears an error compiler: "No exact matches in call to initializer".
Here is the code:
Recording entity:
@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)!)
}
}
}
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")
}
}
}
Any idea? I have tried to simplify the code so let me know if I have forgotten something. Thanks!