ios - 如何在swift中从函数中提取值

标签 ios swift

所以我用 swift 编写了一个函数,它从 JSON api 给我一个数值。我的问题是如何从函数中获取值,以便以更实际的方式使用它。

 override func viewDidLoad() {
    super.viewDidLoad()
    getJSON()
}

func getJSON(){
    let url = NSURL(string: baseURL)
    let request = NSURLRequest(URL: url!)
    let session = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration())
    let task = session.dataTaskWithRequest(request) { (data, response, error) -> Void in

        if error == nil{

            let swiftyJSON = JSON(data: data!)
            let usdPrice = swiftyJSON["bpi"]["USD"]["rate"].doubleValue
            print(usdPrice)


        }else{

        print("There was an error!")
        }

让 usdPrice 为我获取值,那么我如何从函数 getJSON() 中获取该值并对其进行处理,例如将其归因于 Main.storyboard 中的某个标签

最佳答案

很遗憾,其他答案不正确。仅返回一个值是行不通的,因为您是从 dataTaskWithRequest 的完成闭包中获取值。

return usdPrice 语句应该是编译器错误,因为完成闭包没有返回值。

您需要将自己的完成闭包添加到 getJSON 以获取 double 作为参数。

override func viewDidLoad() {
    super.viewDidLoad()

    getJSON { (usdPrice) -> Void in
        // do something with usdPrice
        print(usdPrice)
    }
}

func getJSON(completion: (Double) -> Void) {
    let url = NSURL(string: baseURL)
    let request = NSURLRequest(URL: url!)
    let session = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration())
    let task = session.dataTaskWithRequest(request) { (data, response, error) -> Void in

        if error == nil{
            let swiftyJSON = JSON(data: data!)
            let usdPrice = swiftyJSON["bpi"]["USD"]["rate"].doubleValue
            completion(usdPrice)
        } else {
            print("There was an error!")
        }
}

关于ios - 如何在swift中从函数中提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34599259/

相关文章:

ios - 谷歌地图方向

ios - 在更改 VC 之前获取并存储 PanoramaView 的位置

iphone - 在iPad上镜像应用程序屏幕需要什么?

ios - Xcode 获取一致的文档目录路径

ios - 在使用 xamarin 的应用程序购买中努力测试 IOS

swift - Firebase:如何检查查询是否完成? ( swift )

ios - Swift:使用 for in 循环从 plist 中检索数据

ios - UITableViewCell 动态高度服务器端

ios - 使用循环打印字典的值

ios - 为什么调用 NSMutableAttributedString addAttributes 会崩溃?