Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 无法从函数返回字符串_Ios_Swift_String_Function - Fatal编程技术网

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对不起,我已经编辑了代码。这能回答你的问题吗?