繁体   English   中英

Swift函数错误:'Float'不能转换为'Void'

[英]Swift Function Error: 'Float' is not convertible to 'Void'

我有以下函数,它生成一个快速的NSURLConnection请求并返回页面的内容。 该函数在我的返回行上给出了一个错误'Float' is not convertible to '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
        }
    }
}

出了什么问题?

这里有两个问题。

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

最有意义的是你的外部函数返回Void ,并且它接受一个期望Float并返回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)
        }
    }
}

并且为了记录... (data as NSString).floatValue对我来说非常可疑......

你的返回是在你的httpGet()闭包内,它应该什么都不返回(“Void”)。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM