J'essaie d'utiliser swiftyjson et j'obtiens une erreur:
L'appel peut être lancé, mais il est marqué par "essayer" et l'erreur n'est pas gérée.
J'ai validé que ma source JSON est bonne. J'ai cherché et je ne trouve pas de solution à ce problème
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()
}
}
Merci pour votre aide!
Vous devriez l'envelopper dans un do-catch
bloquer. Dans ton cas:
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
}
L'initialiseur SwiftyJSON throws
, la déclaration est
public init(data: Data, options opt: JSONSerialization.ReadingOptions = []) throws
Vous avez trois options:
Utiliser un do - catch
bloque et gère l'erreur (celle recommandée).
do {
let json = try JSON(data: data)
print(json)
} catch {
print(error)
// or display a dialog
}
Ignorez l'erreur et liez facultativement le résultat (utile si l'erreur n'a pas d'importance).
if let json = try? JSON(data: data) {
print(json)
}
Forcer le déroulement du résultat
let json = try! JSON(data: data)
print(json)
N'utilisez cette option que s'il est garanti que la tentative n'échouera jamais (pas dans ce cas!). Try!
peut être utilisé par exemple dans FileManager
si un répertoire est l'un des répertoires par défaut que le framework crée quand même.
Pour plus d'informations, veuillez lire Swift Language Guide - Error Handling
Vous devez probablement implémenter do{} catch{}
bloquer. Dans le bloc do
, vous devez appeler la fonction jetable avec try.