Impossible de compiler le modificateur de vue fileExporter dans SwiftUI

J'ai quelques difficultés à créer une fonctionnalité d'exportation pour mon projet de loisir. Je souhaite pouvoir exporter mes données au format JSON. Selon les FileDocumentcapacités, cela devrait être exactement ce que je recherche.

J'ai rassemblé mon FileDocument et après avoir défini le modificateur de vue .fileExporteret rempli les bonnes informations, il ne se compile pas.

Mon code ressemble à ceci:

struct YourData: View {
@ObservedObject var manager = Manager.shared
@State private var isShowingFileExporter = false
private var document: FileDocument? {
manager.retrieveData()
}
var body: some View {
List {
Text("Import Data")
Text("Export Data")
.onTapGesture {
isShowingFileExporter = true
}
}
.navigationTitle("Manage Your Data")
.navigationBarTitleDisplayMode(.inline)
.fileExporter(
isPresented: $isShowingFileExporter,
document: document,
contentType:.json,
onCompletion: { result in
switch result {
case let.success(url):
print("Data saved to: \(url)")
isShowingFileExporter = false
case let.failure(error):
print("Data failed to save with error: \(error.localizedDescription)")
isShowingFileExporter = false
}
}
)
}
}

L'erreur de compilation indique : no exact matches in call to instance method 'fileExporter' Me manque-t-il une importation ou quelque chose ? J'importe seulement SwiftUIet UniformTypeIdentifiers.

Tous les conseils grandement appréciés.


Solution du problème

Le .fileExportertype de document attendu est concret (pas un protocole FileDocument), il doit donc être fourni

struct YourData: View {
@ObservedObject var manager = Manager.shared
@State private var isShowingFileExporter = false
private var document: YourFileDocument? { // << here!!

Commentaires

Posts les plus consultés de ce blog

Erreur Symfony : "Une exception a été levée lors du rendu d'un modèle"

Détecter les appuis sur les touches fléchées en JavaScript

Une chaîne vide donne "Des erreurs ont été détectées dans les arguments de la ligne de commande, veuillez vous assurer que tous les arguments sont correctement définis"