Ios Swift功能错误:';浮动';不可转换为';无效';

Ios Swift功能错误:';浮动';不可转换为';无效';,ios,swift,Ios,Swift,我有以下函数,它生成一个快速NSURLConnection请求并返回页面内容。函数在返回行上给我一个错误“Float”不能转换为“Void” func getDJI(year: Int, month: Int, day: Int) -> Float { let baseURL = "http://geo.crox.net/djia" var request = NSMutableURLRequest(URL: NSURL(string: String(format:"%@

我有以下函数,它生成一个快速NSURLConnection请求并返回页面内容。函数在返回行上给我一个错误
“Float”不能转换为“Void”

func getDJI(year: Int, month: Int, day: Int) -> Float {
    let baseURL = "http://geo.crox.net/djia"

    var request = NSMutableURLRequest(URL: NSURL(string: String(format:"%@/%02d/%02d/%02d",baseURL, year, month, day))!)
    httpGet(request){
        (data, error) -> Void in
        if error != nil {
            println(error)
        } else {
            return (data as NSString).floatValue
        }
    }
}

出了什么问题?

您的返回在
httpGet()
闭包中,该闭包应该不返回任何内容(“Void”)


这看起来像是您试图获取一个异步
httpGet()
函数,并将其视为一个同步函数。你不能那样做。我不知道
httpGet()
做了什么,但很明显,它会立即返回,并在下载数据时调用其闭包。

这里有两个问题

首先,你有一个闭包,它应该返回
Void
,你试图从中返回一个
Float
,其次,你有一个函数,它应该返回一个
Float
,但你永远不会从中返回任何东西

最有意义的是,外部函数返回
Void
,并接受一个要求
浮动并返回
Void
的闭包:

func getDJI(year: Int, month: Int, day: Int, completion:(Float)->Void) -> Void {
    let baseURL = "http://geo.crox.net/djia"

    var request = NSMutableURLRequest(URL: NSURL(string: String(format:"%@/%02d/%02d/%02d",baseURL, year, month, day))!)
    httpGet(request){
        (data, error) -> Void in
        if error != nil {
            println(error)
        } else {
            completion((data as NSString).floatValue)
        }
    }
}
为了记录在案<代码>(数据为NSString)。floatValue在我看来非常可疑