Erro de compilação de ML para Catalyst (Xcode 12 GM)

Sep 16 2020

Alguém mais está tendo problemas com o lançamento de GM com modelos de ML e tem uma solução para isso? Eu obtenho o seguinte erro:

Type 'MLModel' has no member '__loadContents'

Eu limpei os dados derivados do projeto + excluídos (este é um arquivo gerado que é colocado na pasta de dados derivados)

Percebi que o método não deveria estar lá para o mac OS 10.15 que uso, mas está lá por algum motivo.

Também percebi que esta API ainda está em beta enquanto o GM é uma versão de produção? https://developer.apple.com/documentation/coreml/mlmodel

Devo regenerar o modelo de ML?

Respostas

6 COzkurt Sep 28 2020 at 06:19

A causa raiz disso é:

O compilador CoreML no Xcode 12.0 GM está gerando código que possui símbolos disponíveis apenas no macOS BigSur, causando o problema de compilação. Se o objetivo é construir um catalisador ou aplicativo apenas para macOS com Xcode 12.0

Passos para corrigir:

  1. Nas configurações de compilação de alvos, você pode definir COREML_CODEGEN_LANGUAGE como "Nenhum"
  2. Abra o terminal e vá para a pasta .mlmodel
  3. Digite "xcrun coremlcompiler generate <YourModel.mlmodel> --language Swift."
  4. Isso criará o arquivo <YourModel.swift> na mesma pasta.
  5. Abra o Xcode e adicione <YourModel.swift> em seu projeto.
  6. Clique em <YourModel.swift> e comente o método que o compilador reclama.

No meu caso, comento:

class func load(contentsOf modelURL: URL, configuration: MLModelConfiguration = MLModelConfiguration(), completionHandler handler: @escaping (Swift.Result<Nudity, Error>) -> Void)

e

class func load(configuration: MLModelConfiguration = MLModelConfiguration(), completionHandler handler: @escaping (Swift.Result<Nudity, Error>) -> Void)

métodos para consertar arquivo rápido.