在项目中插入CoreML模型会导致错误

时间:2020-05-18 12:35:18

标签: ios swift xcode coreml createml

我想在我的Swift项目中插入一个CoreML模型。但是,每当我插入模型并构建项目时,都会使用为mlmodel自动生成的模型类文件遇到“ Swift Compiler Errors”。无论我添加到项目的任何模型,都有四个错误

在自动生成的文件中有一行:

try! self.init(contentsOf: type(of:self).urlOfModelInThisBundle)

它引发错误- 1.调用中的参数标签不正确(具有“ of:”,预期为“ rawValue:”) 2.类型“类型”的值没有成员'urlOfModelInThisBundle'

2 个答案:

答案 0 :(得分:0)

解决了。通过禁用自动生成类文件来解决此问题。我创建了一个手动Swift文件,并从生成的文件中粘贴了相同的代码。只需将错误行的语法更改为:

try! self.init(contentsOf: model_className.urlOfModelInThisBundle)

这很好用,现在我可以在项目中使用模型了。

但是,这仍然不能解释为什么错误首先出现。

答案 1 :(得分:-1)

确保模型中包含以下代码。

class NmeOfModel {
var model: MLModel
class var urlOfModelInThisBundle : URL {
    let bundle = Bundle(for: NmeOfModel.self)
    return bundle.url(forResource: "NmeOfModel", withExtension:"mlmodelc")!
}

然后您可以创建一个这样的模型对象

guard let model = try? VNCoreMLModel(for: NameOfModel().model) else{
        fatalError("error with loading model")
    }

然后向模型提出请求。

let request = VNCoreMLRequest(model: model) { (request, error) in
        guard let results = request.results?.first as? VNClassificationObservation else {
            fatalError("error with handling result")
        }
相关问题