2017-07-11 1 views
0

このトピックを検索して他の人の回答を読んで、 。私のコードでIOS:コールはスローされますが、「試行」とマークされていません。エラーは処理されません。

import Foundation 

protocol WeatherServiceDelegate { 
    func setWeather(weather: Weather) 
} 

class WeatherService { 
    var delegate: WeatherServiceDelegate? 

    func getWeather(city: String) { 
     let path = "http://samples.openweathermap.org/data/2.5/weather?q=London,uk&appid=b1b15e88fa797225412429c1c50c122a1" 
     let url = URL(string: path)! 
     let session = URLSession.shared 
     let task = session.dataTask(with: url) { (data: Data?, response: URLResponse?, error: Error?) -> Void in 
      if let data = data { 
       //print(">>>>\(data)") 

       let json = JSON(data: data) 
      } 
     } 

     task.resume() 
     } 
} 

が、私はこの行からのエラーを取得します。小さな赤い矢印が...右JSONで「J」の下にある

let json = JSON(data: data) 

とエラービーイング:

コールを投げることができますが、「してみてください」とエラーがあるとマークされていません扱われない

+0

の中に置くべきであるということですJSON(データ:データ)を試してみましょう。 – murphguy

+1

スイング言語ガイドを読んでください。真剣に。 – Alexander

答えて

3

あなたがしたいことは次のとおりです。

言おうとしている何のXcode
var json: [AnyHashable:Any]? 

do { 
    json = try JSON(data: data) 
} catch _ { 
    json = nil 
} 

JSON(data: data)の呼び出しがエラーをスローすることができますし、あなたが{} DOの内部データ{}括弧内のすべてのものを配置する必要がありtry-catch

+0

残念ながら私はより多くのエラーを取得します... –

+0

何を言っていますか? –

+2

@HarrySingh 'catch'に行くなら、' try? 'を使っても意味がありません。 'try'を使うか、' catch'を削除してください。 – Alexander

関連する問題