Ios Swift功能错误:';浮动';不可转换为';无效';
我有以下函数,它生成一个快速NSURLConnection请求并返回页面内容。函数在返回行上给我一个错误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:"%@
“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在我看来非常可疑