ML Build-Fehler für Catalyst (Xcode 12 GM)
Hat noch jemand Probleme mit der GM-Version mit ML-Modellen und hat eine Lösung dafür? Ich erhalte folgende Fehlermeldung:
Type 'MLModel' has no member '__loadContents'
Ich habe das Projekt bereinigt + abgeleitete Daten gelöscht (dies ist eine generierte Datei, die in den Ordner für abgeleitete Daten gestellt wird).
Ich stelle fest, dass die Methode für Mac OS 10.15, das ich verwende, nicht vorhanden sein sollte, aber aus irgendeinem Grund.
Mir ist auch aufgefallen, dass sich diese API noch in der Beta befindet, während der GM ein Produktions-Build ist. https://developer.apple.com/documentation/coreml/mlmodel
Soll ich das ML-Modell neu generieren?
Antworten
Die Hauptursache hierfür ist:
Der CoreML-Compiler in Xcode 12.0 GM generiert Code, dessen Symbole nur unter macOS BigSur verfügbar sind und das Kompilierungsproblem verursachen. Wenn das Ziel darin besteht, einen Katalysator oder eine Nur-MacOS-App mit Xcode 12.0 zu erstellen
Zu behebende Schritte:
- In den Build-Einstellungen Ihrer Ziele können Sie COREML_CODEGEN_LANGUAGE auf "Keine" setzen.
- Öffnen Sie das Terminal und gehen Sie zu Ihrem .mlmodel-Ordner
- Geben Sie "xcrun coremlcompiler generate <YourModel.mlmodel> --language Swift" ein.
- Dadurch wird die Datei <YourModel.swift> im selben Ordner erstellt.
- Öffnen Sie Xcode und fügen Sie <YourModel.swift> zu Ihrem Projekt hinzu.
- Klicken Sie auf <YourModel.swift> und kommentieren Sie die vom Compiler beanstandete Methode aus.
In meinem Fall kommentiere ich:
class func load(contentsOf modelURL: URL, configuration: MLModelConfiguration = MLModelConfiguration(), completionHandler handler: @escaping (Swift.Result<Nudity, Error>) -> Void)
und
class func load(configuration: MLModelConfiguration = MLModelConfiguration(), completionHandler handler: @escaping (Swift.Result<Nudity, Error>) -> Void)
Methoden zum Beheben schneller Dateien.