如何在Xcode App Playgrounds(.swiftpm)项目中添加.mlmodel文件?
在Xcode App Playgrounds(.swiftpm)中添加.mlmodel文件的错误解决方法
问题描述
开发Xcode App Playgrounds项目(.swiftpm格式)时,添加Exercises.mlmodel这类模型文件会触发错误:
Exercises.mlmodel: No predominant language detected. Set COREML_CODEGEN_LANGUAGE to preferred language.
该模型文件在常规Xcode项目(.xcodeproj)中可正常使用,仅在.swiftpm环境下报错。已尝试以下操作但未解决:
- 确认.mlmodel文件已正确添加到项目文件夹
- 在.xcodeproj环境中验证生成的Core ML Swift代码可正常运行
- 尝试在Xcode中为.swiftpm项目设置
COREML_CODEGEN_LANGUAGE,但未找到对应选项 - 试过相关解决方案但无效
可行解决方案
方案1:手动修改Package.swift添加编译参数
直接在项目的Package.swift文件中,为包含.mlmodel的target添加编译标记,指定Core ML代码生成语言为Swift:
let package = Package( name: "你的项目名称", products: [ .executable(name: "你的App名称", targets: ["你的App目标名"]), ], dependencies: [], targets: [ .executableTarget( name: "你的App目标名", dependencies: [], resources: [ .process("Exercises.mlmodel") // 确保模型文件被作为资源处理 ], swiftSettings: [ .unsafeFlags(["-Xcc", "-DCOREML_CODEGEN_LANGUAGE=Swift"]) ] ), ] )
修改后重新加载项目,Xcode会根据指定的语言自动生成Core ML代码。
方案2:预先生成Swift代码再导入项目
如果方案1无效,可以先在常规.xcodeproj项目中生成模型对应的Swift代码,再将代码和模型文件一起导入.swiftpm项目:
- 在.xcodeproj项目中选中.mlmodel文件,在右侧检查器中将「Code Generation Language」设置为Swift
- 找到Xcode自动生成的同名.swift文件(比如
Exercises.swift) - 将
Exercises.swift和Exercises.mlmodel一起添加到.swiftpm项目中 - 在
Package.swift的target资源配置中添加:.process("Exercises.mlmodel")
这样可以绕开.swiftpm环境下自动代码生成的语言检测问题,直接使用预先生成的代码。
内容的提问来源于stack exchange,提问作者MohAliBou
相关产品推荐
相关产品推荐

