2017-02-16 6 views
1

Advanced NSOperationsサンプルアプリケーションをSwift 3にアップデートしました。残っているビルドエラーはDownloadEarthquakesOperationクラスのコードスニペットです。URLSessionインスタンスメソッド `downloadTask`エラー

let url = URL(string: "http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_month.geojson")! 

    let task = URLSession.shared.downloadTask(with: url) { (url, response, error) in 
     self.downloadFinished(url, response: response, error: error) 
    } 

エラーが読み取ります

は起動できません 'downloadTask' '(と: URL(URL ?, URLResponse ?,エラー) - >ボイド?)' タイプの引数リストで'(?:URL、completionHandler: - >ボイド @escaping(URL ?, URLResponse?エラー)と')

T型の引数リストを期待

@escaping属性がコールサイトに影響を及ぼすべきでないため、彼のエラーは私には意味をなさない。 考えていますか?

+0

これは奇妙に思えます。末尾のクロージャ構文を使用せずに試してみたらどうでしょうか?私。 'completionHandler:'ラベルを追加して内部に移動してください) –

+0

@DaveWestonそれを試してみてください。まだ運がありません。 – jjatie

答えて

1

コンパイラがクロージャの戻り値の型をクロージャの1行が返すものから推測しようとしているため、1つのクロージャが問題を引き起こすことがよくあります。理論的には正しいタイプを推測できるはずです(はVoidを返します)。最初の変換時にはAdvancedNSOperationsという非常に多くの問題が混乱しているようです。あなたは、明示的なreturnステートメントを追加することで警告を消すことができます。

率直
let url = URL(string: "http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_month.geojson")! 

let task = URLSession.shared.downloadTask(with: url) { url, response, error in 
    self.downloadFinished(url, response: response, error: error) 
    return 
} 

、私は変換(他の問題のすべてを固定)を終えた後、私は戻って、そのreturnステートメントを削除することができたし、それはありませんでした長い問題。

0

スウィフト3でそれを試してみてください。

let url = URL(string: "http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_month.geojson")! 

URLSession.shared.dataTask(with: url, completionHandler: { (data, response, error) in 
    if error != nil { 
     print(error!) 
     return 
    } 
    // dosomething here 
    print(data) 

}).resume() 

はそれが助けを願って!

関連する問題