簡體   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