![](/img/trans.png)
[英]filterUsingPredicate in swift gives error “Void is not convertible to NSArray”
[英]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.