Erreur de construction ML pour Catalyst (Xcode 12 GM)
Quelqu'un d'autre a des problèmes avec la version GM avec les modèles ML et a une solution pour cela? J'obtiens l'erreur suivante:
Type 'MLModel' has no member '__loadContents'
J'ai nettoyé le projet + les données dérivées supprimées (il s'agit d'un fichier généré qui est placé dans le dossier de données dérivées)
Je remarque que la méthode ne devrait pas être là pour mac OS 10.15 que j'utilise, mais elle est là pour une raison quelconque.
J'ai également remarqué que cette API est toujours en version bêta alors que le GM est une version de production? https://developer.apple.com/documentation/coreml/mlmodel
Dois-je régénérer le modèle ML?
Réponses
La cause première de ceci est:
Le compilateur CoreML dans Xcode 12.0 GM génère du code dont les symboles sont disponibles uniquement sur macOS BigSur, ce qui cause le problème de compilation. Si l'objectif est de créer une application catalyseur ou uniquement macOS avec Xcode 12.0
Étapes à suivre:
- Dans les paramètres de création de vos cibles, vous pouvez définir COREML_CODEGEN_LANGUAGE sur "Aucun"
- Ouvrez le terminal puis accédez à l'emplacement de votre dossier .mlmodel
- Tapez "xcrun coremlcompiler generate <YourModel.mlmodel> --language Swift."
- Cela créera le fichier <YourModel.swift> dans le même dossier.
- Ouvrez Xcode et ajoutez <YourModel.swift> dans votre projet.
- Cliquez sur <YourModel.swift> et mettez en commentaire la méthode que le compilateur se plaint.
Dans mon cas, je commente:
class func load(contentsOf modelURL: URL, configuration: MLModelConfiguration = MLModelConfiguration(), completionHandler handler: @escaping (Swift.Result<Nudity, Error>) -> Void)
et
class func load(configuration: MLModelConfiguration = MLModelConfiguration(), completionHandler handler: @escaping (Swift.Result<Nudity, Error>) -> Void)
méthodes pour réparer le fichier swift.