有没有办法在源代码级别为iOS11 +提供CoreML模型

Xvo*_*lks 3 ios coreml

我的应用程序中有一个CoreML模型.

在运行时,应在iOS8-10上禁用预测功能,在iOS11上激活预测功能.

为了能够编译,在所有使用CoreML的类上,我添加了:

@available(iOS 11.0,*)

但是.mlmodel会在每次重建时生成Swift代码,丢弃所有注释.因此创建编译错误,如:

'MLModel'仅适用于iOS 11.0或更高版本

在Xcode9中是否有办法只制作mlmodel iOS11?

编辑:此错误已在XCode 9 beta 4中修复.不再需要解决方法.

Ale*_*nko 6

UPD.07/25/17: Apple刚推出了用于在设备上编译模型的新API.这意味着,您现在可以避免步骤1-4.

  1. (可选)切换到Xcode beta sudo xcode-select --switch /Applications/Xcode-beta.app/Contents/Developer.
  2. 编译你的模型:xcrun coremlcompiler compile /path/to/MyModel.mlmodel /path/to/output/folder.
  3. 将已编译的模型文件夹MyModel.mlmodelc放入您的应用包.
  4. MyModel.swift手动将自动生成的swift模型class()添加到项目中并使用它进行注释@available(iOS 11.0, *). 如何找到模型类
  5. 加载并初始化您的模型:

    let path = Bundle.main.path(forResource:"MyModel",ofType:"mlmodelc")

    let url = URL(fileURLWithPath:path!)

    让模特=试试!MyModel(contentsOf:url)

警告:我没有尝试将此类应用程序上传到AppStore.我已经在我的测试设备上尝试了它,它可以工作,我只是不确定它是否在发布到Appstore后继续工作.