🍎

existential anyを有効にするとMLModel周りでエラーが出る

2024/12/19に公開

経緯

Swift6移行に向けて対応を進めている時の話。
upcoming featuresのexistential anyを有効にしたら、MLModelの自動生成ファイルでエラーが発生しました。

  • existential anyを有効に設定

  • エラー該当箇所の1つ(計4箇所)

private let provider : MLFeatureProvider
  • エラー文
Use of protocol 'MLFeatureProvider' as a type must be written 'any MLFeatureProvider'

自動生成ファイルだから対応できなくない?

試したこと

  • DerivedData のキャッシュを削除し、自動生成ファイルを再生成。
  • Swift6を設定して、上記をtry。
  • coremlcを使って、コマンドでSwift6を指定してファイルを生成。
    全部ダメでした
    Developer Forumsで聞いてみました

対応方法

自動生成はexistential anyの対応はまだみたいなので、

  1. 自動生成をオフにする
    Target Membership" → "No generated class"

  2. 自動生成されていたファイルを自分で書く or bundle urlからMLModelを初期化して使用する

でエラー文なくしてexistential anyを有効にできます!

Discussion