Erro de compilação de ML para Catalyst (Xcode 12 GM)
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
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:
- Nas configurações de compilação de alvos, você pode definir COREML_CODEGEN_LANGUAGE como "Nenhum"
- Abra o terminal e vá para a pasta .mlmodel
- Digite "xcrun coremlcompiler generate <YourModel.mlmodel> --language Swift."
- Isso criará o arquivo <YourModel.swift> na mesma pasta.
- Abra o Xcode e adicione <YourModel.swift> em seu projeto.
- 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.