Ios 无法从函数返回字符串
我试图从函数返回Ios 无法从函数返回字符串,ios,swift,string,function,Ios,Swift,String,Function,我试图从函数返回字符串,但得到错误“使用未解析的标识符nameOfFlower”。以下是我的功能: func detectFlower(image: CIImage) -> String { guard let model = try? VNCoreMLModel(for: FlowerModels().model) else { fatalError("Cannot import a model.") } let
字符串
,但得到错误“使用未解析的标识符nameOfFlower”。以下是我的功能:
func detectFlower(image: CIImage) -> String {
guard let model = try? VNCoreMLModel(for: FlowerModels().model) else {
fatalError("Cannot import a model.")
}
let request = VNCoreMLRequest(model: model) { (request, error) in
let classification = request.results?.first as? VNClassificationObservation
var nameOfFlower = String(classification?.identifier ?? "Unexpected type")
}
let handler = VNImageRequestHandler(ciImage: image)
do {
try handler.perform([request])
} catch {
print(error)
}
return nameOfFlower
}
代码有什么问题?它的异步代码。。所以使用闭包作为完成块
func detectFlower(image: CIImage,completion: @escaping (_ getString:String?,_ error:Error?)-> Void) {
guard let model = try? VNCoreMLModel(for: FlowerModels().model) else {
fatalError("Cannot import a model.")
}
let request = VNCoreMLRequest(model: model) { (request, error) in
let classification = request.results?.first as? VNClassificationObservation
var nameOfFlower = String(classification?.identifier ?? "Unexpected type")
completion(nameOfFlower,nil)
}
let handler = VNImageRequestHandler(ciImage: image)
do {
try handler.perform([request])
} catch {
print(error)
completion(nil,error)
}
}
如何使用
detectFlower(image: yourImage) { (flowerString, error) in
// you get optional flower string here
}
它的异步代码。。所以使用闭包作为完成块
func detectFlower(image: CIImage,completion: @escaping (_ getString:String?,_ error:Error?)-> Void) {
guard let model = try? VNCoreMLModel(for: FlowerModels().model) else {
fatalError("Cannot import a model.")
}
let request = VNCoreMLRequest(model: model) { (request, error) in
let classification = request.results?.first as? VNClassificationObservation
var nameOfFlower = String(classification?.identifier ?? "Unexpected type")
completion(nameOfFlower,nil)
}
let handler = VNImageRequestHandler(ciImage: image)
do {
try handler.perform([request])
} catch {
print(error)
completion(nil,error)
}
}
如何使用
detectFlower(image: yourImage) { (flowerString, error) in
// you get optional flower string here
}
别让我们绞死。错误消息的其余部分是什么?请准确发布您得到的内容。您需要返回完成块,而不是返回其异步代码。。所以使用closure@tadman对不起,我已经编辑了代码。这能回答你的问题吗?别让我们绞死。错误消息的其余部分是什么?请准确发布您得到的内容。您需要返回完成块,而不是返回其异步代码。。所以使用closure@tadman对不起,我已经编辑了代码。这能回答你的问题吗?