OC与Swift混合项目中CoreML mlmodel自动生成.h类文件方法
在OC与Swift混合项目中让CoreML自动生成Objective-C模型类的方法
我之前也踩过这个坑!当项目里引入Swift文件后,Xcode会默认把CoreML模型的代码生成语言切换成Swift,而且生成的Swift类还不会显式出现在项目结构里,导致OC代码根本没法调用。下面是亲测有效的解决步骤:
- 首先选中你的
.mlmodel文件,打开右侧的File Inspector(就是那个带文件图标的侧边面板) - 在面板的CoreML区域,找到Code Generation Language选项——默认应该是
Swift,直接把它改成Objective-C - 接下来做一次清理编译:按下
Cmd+Shift+K清理项目缓存,再按Cmd+B重新编译项目 - 编译完成后,你就可以在Objective-C的ViewController里直接导入模型头文件了,格式是
#import "<你的模型文件名>.h",比如你的模型叫ImageClassifier.mlmodel,就写#import "ImageClassifier.h"
额外注意事项
- 生成的Objective-C头文件其实存放在项目的派生数据目录里,不需要手动去找到它添加到项目中,直接导入就能用
- 不要把模型的头文件加到项目的桥接文件(比如
YourProjectName-Bridging-Header.h)里,否则会出现编译冲突,OC文件直接导入即可 - 如果改完语言还是没生成对应的.h文件,检查一下模型文件的Target Membership,确保它勾选了你的主项目Target,没有被意外排除
内容的提问来源于stack exchange,提问作者kobunketsu
相关产品推荐
相关产品推荐

