我想在我的Swift项目中插入一个CoreML模型。但是,每当我插入模型并构建项目时,都会使用为mlmodel自动生成的模型类文件遇到“ Swift Compiler Errors”。无论我添加到项目的任何模型,都有四个错误
在自动生成的文件中有一行:
try! self.init(contentsOf: type(of:self).urlOfModelInThisBundle)
它引发错误- 1.调用中的参数标签不正确(具有“ of:”,预期为“ rawValue:”) 2.类型“类型”的值没有成员'urlOfModelInThisBundle'
答案 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")
}