如何从swift中的函数中提取值

时间:2016-01-04 20:27:26

标签: 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中的某个标签

3 个答案:

答案 0 :(得分:1)

不幸的是,其他答案都不正确。只返回一个值是行不通的,因为你从OK! Parsed: OK! Parsed: 1, 2, 3, 4, 6, 7, 9, 10, 11, 12, 的完成闭包中得到了值。

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

您需要将自己的完成闭包添加到return usdPrice,并将double作为参数。

getJSON

答案 1 :(得分:0)

答案 2 :(得分:0)

您必须拥有该功能的返回值。下面的代码应该有效。

func getJSON() -> Double {

    let url = NSURL(string: baseURL)
    let request = NSURLRequest(URL: url!)
    let session = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration())
    var usdReturnValue : Double = 0.0
    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)
            usdReturnValue = usdPrice


        }else{

        print("There was an error!")
        }
    }
    return usdReturnValue
}