所以我在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中的某个标签
答案 0 :(得分:1)
不幸的是,其他答案都不正确。只返回一个值是行不通的,因为你从OK! Parsed:
OK! Parsed: 1, 2, 3, 4, 6, 7, 9, 10, 11, 12,
的完成闭包中得到了值。
语句dataTaskWithRequest
应该是编译器错误,因为完成闭包没有返回值。
您需要将自己的完成闭包添加到return usdPrice
,并将double作为参数。
getJSON
答案 1 :(得分:0)
您的函数需要在执行时返回值。有关详细信息,请查看以下内容:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Functions.html#//apple_ref/doc/uid/TP40014097-CH10-ID160
答案 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
}