型の値を変換できません、私はちょうどスウィフト3プログラムに取り組んスウィフト2を更新し、私はエラーを取得しています、Swift 2からSwift 3: '(Data?、NSError?) - > Void'の型の値を期待される引数型 'GTMSessionFetcherCompletionHandler'に変換できません。
- 期待される引数の型「GTMSessionFetcherCompletionHandlerに「(データ?, NSError?)>ボイド」 ? '
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
}
}
が、それは、この関数までエラーを移動します「タイプのreturn式を変換できません '(?データ?, NSError) - >ボイド' タイプを返すために、 'GTMSessionFetcherCompletionHandler?' "
カレー(?)データとエラー変数を保持する方法を理解できず、コンパイルすることができません。
Ah - 参照してください。 Option +クリックトリックもいいですね! –
私は追加する必要があります - これは私のコードの他の部分にも影響を与えました - NSErrorを使用するコードをいくつか強制し、実行時エラーが発生しました。私はあなたの応答なしでランタイムエラーを把握していないでしょう。ありがとう! –
@ChrisGregg喜んでお答えください。 – Hamish