Swift-如何通过异步请求获取变量的返回值

问题描述

我是SWIFT和应用程序开发的新手,我正在努力让我着迷于闭包。

我正在使用Alamofire和SwiftyJSON。我已经读了很多关于它的文章,但是我仍然不知道如何解决问题。

我首先拥有完成处理程序闭包的代码块

func SendGeocodeRequest(query:String,completionHandler: @escaping (Float)-> Void) {

    var ltd:Float = 1.0
    AF.request(query).responseJSON { response in

        switch response.result {
        case .success(let value):
            let json=JSON(value)

            ltd  = json["results"][0]["geometry"]["location"]["lat"].floatValue
            completionHandler(ltd)
            
        case .failure(let error):
            print(error)
        }
    }
}

然后我正在调用该函数:

SendGeocodeRequest(query: query_origin) { ltd in
    print("ltd value is \(ltd)")
    
}

我从打印声明中调用的google API中获得了宽容。

我的问题如下:如何代替print语句,如何将该值存储在变量中并在函数外部使用它?由于该函数具有void返回类型,因此我看不到如何执行此操作。 我希望能够将SendGeocodeRequest函数中的纬度值分配给一个变量,以便以后可以在我的代码中使用[为了更清晰而编辑]

解决方法

可以说您是在名为ViewController.swift的View Controller中调用此函数的。 只需在View Controller中创建一个名为latitude的类属性,并将API调用的响应分配给该属性。

write("test.bin",htol(test_matrix))

然后在任意位置使用latitude属性。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...