Swiftyjsonを使用しようとしていますが、エラーが発生します。
呼び出しはスローできますが、「try」とマークされ、エラーは処理されません。
ソースJSONが適切であることを検証しました。検索してみましたが、この問題の解決策が見つかりません
import Foundation
class lenderDetails
{
func loadLender()
{
let lenders = ""
let url = URL(string: lenders)!
let session = URLSession.shared.dataTask(with: url)
{
(data, response, error) in
guard let data = data else
{
print ("data was nil?")
return
}
let json = JSON(data: data)
print(json)
}
session.resume()
}
}
すべての助けてくれてありがとう!
do-catch
ブロックにラップする必要があります。あなたの場合:
do {
let session = URLSession.shared.dataTask(with: url) {
(data, response, error) in
guard let data = data else {
print ("data was nil?")
return
}
let json = JSON(data: data)
print(json)
}
} catch let error as NSError {
// error
}
SwiftyJSON初期化子throws
、宣言は
public init(data: Data, options opt: JSONSerialization.ReadingOptions = []) throws
次の3つのオプションがあります。
使う do - catch
ブロックしてエラーを処理します(推奨されるエラー)。
do {
let json = try JSON(data: data)
print(json)
} catch {
print(error)
// or display a dialog
}
エラーを無視し、オプションで結果をバインドします(エラーが重要でない場合に役立ちます)。
if let json = try? JSON(data: data) {
print(json)
}
結果を強制的にアンラップします
let json = try! JSON(data: data)
print(json)
このオプションは、試行が失敗しないことが保証されている場合にのみ使用してください(この場合ではありません!)。 Try!
は、ディレクトリがフレームワークがとにかく作成するデフォルトのディレクトリの1つである場合、たとえばFileManager
で使用できます。
詳細については、 Swift Language Guide-Error Handling をご覧ください。
おそらく、do{} catch{}
ブロックを実装する必要があります。 do
ブロック内では、tryでthrowable関数を呼び出す必要があります。