🍎
existential anyを有効にするとMLModel周りでエラーが出る
経緯
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の対応はまだみたいなので、
-
自動生成をオフにする
Target Membership" → "No generated class"
-
自動生成されていたファイルを自分で書く or bundle urlからMLModelを初期化して使用する
でエラー文なくしてexistential anyを有効にできます!
Discussion