Błąd kompilacji ML dla Catalyst (Xcode 12 GM)
Czy ktoś jeszcze ma problemy z wydaniem GM z modelami ML i ma na to rozwiązanie? Otrzymuję następujący błąd:
Type 'MLModel' has no member '__loadContents'
Wyczyściłem projekt + usunięte dane pochodne (jest to wygenerowany plik, który jest umieszczany w folderze danych pochodnych)
Zauważyłem, że metoda nie powinna być dostępna dla systemu Mac OS 10.15, którego używam, ale z jakiegoś powodu jest tam.
Zauważyłem również, że to API jest nadal w fazie beta, podczas gdy GM jest wersją produkcyjną? https://developer.apple.com/documentation/coreml/mlmodel
Czy powinienem zregenerować model ML?
Odpowiedzi
Podstawową przyczyną tego jest:
Kompilator CoreML w Xcode 12.0 GM generuje kod, który zawiera symbole dostępne tylko w macOS BigSur, powodując problem z kompilacją. Jeśli celem jest zbudowanie aplikacji Catalyst lub aplikacji tylko dla macOS z Xcode 12.0
Kroki do naprawienia:
- W ustawieniach kompilacji celów możesz ustawić COREML_CODEGEN_LANGUAGE na „Brak”
- Otwórz terminal, a następnie przejdź do folderu .mlmodel
- Wpisz „xcrun coremlcompiler generuje <YourModel.mlmodel> --language Swift”.
- Spowoduje to utworzenie pliku <YourModel.swift> w tym samym folderze.
- Otwórz Xcode i dodaj <YourModel.swift> do swojego projektu.
- Kliknij <YourModel.swift> i zakomentuj metodę, na którą skarży się kompilator.
W moim przypadku komentuję:
class func load(contentsOf modelURL: URL, configuration: MLModelConfiguration = MLModelConfiguration(), completionHandler handler: @escaping (Swift.Result<Nudity, Error>) -> Void)
i
class func load(configuration: MLModelConfiguration = MLModelConfiguration(), completionHandler handler: @escaping (Swift.Result<Nudity, Error>) -> Void)
metody naprawiania pliku Swift.