我剛剛更新工作斯威夫特2斯威夫特3節目,而我得到的錯誤,Swift 2 Swift 3:無法將類型'(Data?,NSError?) - > Void'的值轉換爲期望的參數類型'GTMSessionFetcherCompletionHandler?'
無法將類型的值「(數據?NSError?) - >虛空」預期參數類型「GTMSessionFetcherCompletionHandler ?
下面是有關細節(希望):
let fetcher = GTMSessionFetcher(urlString:url)
fetcher.authorizer = parentController.service.authorizer
fetcher.beginFetch(completionHandler: handleDownload(studentNum))
^^^^ causing the error
用於completionHandler功能:
func handleDownload(_ studentNum:Int) -> (Data?, NSError?) -> Void {
return { (data: Data?, error: NSError?) -> Void in
// code for function
}
}
GTMSessionFetcherCompletionHandler
在一個Objective-C標題中定義的,如下所示:
#define GTM_NULLABLE_TYPE __nullable
typedef void (^GTMSessionFetcherCompletionHandler)(NSData * GTM_NULLABLE_TYPE data,
NSError * GTM_NULLABLE_TYPE error);
我試過改變韓dleDownload()以下:
func handleDownload(_ studentNum:Int) -> (GTMSessionFetcherCompletionHandler?) {
return { (data: Data?, error: NSError?) -> Void in
// code for function
}
}
但移動誤差降到這個功能:「無法將類型的返回表達式‘(?數據?NSError) - >虛空’返回類型「GTMSessionFetcherCompletionHandler? 「
我無法弄清楚如何保留curried(?)數據和錯誤變量,並進行編譯。
啊 - 我明白了。選項點擊技巧也很好! –
我應該添加 - 這也影響了我的代碼的其他部分 - 我強迫一些代碼使用NSError,並導致運行時錯誤。沒有你的反應,我不會想出運行時錯誤。所以謝謝! –
@ChrisGregg樂意幫忙:) – Hamish