用于条件绑定的初始化程序必须具有可选类型,而不是'ViewController'和void函数中意外的非无效返回值

问题描述 投票:-3回答:1

我是iOS的初学者,我正尝试在Swift中构建图像分类应用。但是,我遇到了两个我不知道如何解决的错误。

第一个错误在guard let strongSelf = self { return }行上,它说:

“用于条件绑定的初始化程序必须具有可选类型,而不是'ViewController'”

第二个错误在return request行上,它表示

“ void函数中非预期的非void返回值”

 var request: VNCoreMLRequest {
    guard let model = try? VNCoreMLModel(for: Fruit().model) else {
        fatalError("Can't load model")
    }

    let request = VNCoreMLRequest(model: model, completionHandler: { (request, error) in
        guard let strongSelf = self else { return }
        if let error = error {
            print("Error making request")
        } else {
            strongSelf.process(request: request)
        }

        return request

    })
}

如何解决这些错误?谢谢!

swift coreml
1个回答
0
投票

第一个错误:

添加[weak self]捕获组

let request = VNCoreMLRequest(model: model, completionHandler: { [weak self] (request, error) in

第二错误:

无法解决,因为您无法从没有返回值的闭包中返回某些内容。无论如何,包含异步任务的计算属性是不可能的。

© www.soinside.com 2019 - 2024. All rights reserved.