ML Build-Fehler für Catalyst (Xcode 12 GM)

Sep 16 2020

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

6 COzkurt Sep 28 2020 at 06:19

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:

  1. In den Build-Einstellungen Ihrer Ziele können Sie COREML_CODEGEN_LANGUAGE auf "Keine" setzen.
  2. Öffnen Sie das Terminal und gehen Sie zu Ihrem .mlmodel-Ordner
  3. Geben Sie "xcrun coremlcompiler generate <YourModel.mlmodel> --language Swift" ein.
  4. Dadurch wird die Datei <YourModel.swift> im selben Ordner erstellt.
  5. Öffnen Sie Xcode und fügen Sie <YourModel.swift> zu Ihrem Projekt hinzu.
  6. 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.