我的应用程序中有一个 CoreML 模型。
在运行时,预测功能应在 iOS8-10 上禁用,并在 iOS11 上激活。
为了能够在使用 CoreML 的所有类上进行编译,我添加了:
@可用(iOS 11.0,*)
但 .mlmodel 在每次重建时都会生成 Swift 代码,并丢弃所有注释。因此会产生编译错误,例如:
“MLModel”仅适用于 iOS 11.0 或更高版本
Xcode9中有没有办法使mlmodel仅适用于iOS11?
EDIT:此错误已在 XCode 9 beta 4 中修复。不再需要解决方法。
更新。 2017 年 7 月 25 日:苹果刚刚推出new API https://developer.apple.com/documentation/coreml/mlmodel/2921516-compilemodel用于在设备上编译模型。这意味着您现在可以避免步骤 1-4。
- (可选)切换到 Xcode beta
sudo xcode-select --switch /Applications/Xcode-beta.app/Contents/Developer
.
- 编译你的模型:
xcrun coremlcompiler compile /path/to/MyModel.mlmodel /path/to/output/folder
.
- 放入编译好的模型文件夹
MyModel.mlmodelc
到您的应用程序包中。
- Add auto-generated swift model class (
MyModel.swift
) to your project manually and annotate it with @available(iOS 11.0, *)
.
-
加载并初始化您的模型:
let path = Bundle.main.path(forResource: "MyModel", ofType: "mlmodelc")
让 url = URL(fileURLWithPath: 路径!)
让模型=尝试!我的模型(内容:网址)
Warning:我还没有尝试将此类应用程序上传到应用程序商店。
我已经在我的测试设备上尝试过了,它可以工作,我只是不确定它在发布到 App Store 后是否还能继续工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)