我的应用程序中有一个CoreML模型.
在运行时,应在iOS8-10上禁用预测功能,在iOS11上激活预测功能.
为了能够编译,在所有使用CoreML的类上,我添加了:
@available(iOS 11.0,*)
但是.mlmodel会在每次重建时生成Swift代码,丢弃所有注释.因此创建编译错误,如:
'MLModel'仅适用于iOS 11.0或更高版本
在Xcode9中是否有办法只制作mlmodel iOS11?
编辑:此错误已在XCode 9 beta 4中修复.不再需要解决方法.
UPD.07/25/17: Apple刚推出了用于在设备上编译模型的新API.这意味着,您现在可以避免步骤1-4.
sudo xcode-select --switch /Applications/Xcode-beta.app/Contents/Developer.xcrun coremlcompiler compile /path/to/MyModel.mlmodel /path/to/output/folder.MyModel.mlmodelc放入您的应用包.MyModel.swift手动将自动生成的swift模型class()添加到项目中并使用它进行注释@available(iOS 11.0, *).

加载并初始化您的模型:
let path = Bundle.main.path(forResource:"MyModel",ofType:"mlmodelc")
let url = URL(fileURLWithPath:path!)
让模特=试试!MyModel(contentsOf:url)
警告:我没有尝试将此类应用程序上传到AppStore.我已经在我的测试设备上尝试了它,它可以工作,我只是不确定它是否在发布到Appstore后继续工作.
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           1204 次  |  
        
|   最近记录:  |