Lire fichier JSON avec Swift 3
J'ai un fichier JSON appelé points.json, et une fonction de lecture comme:
private func readJson() {
let file = Bundle.main.path(forResource: "points", ofType: "json")
let data = try? Data(contentsOf: URL(fileURLWithPath: file!))
let jsonData = try? JSONSerialization.jsonObject(with: data!, options: []) as! [String:Any]
print(jsonData)
}
Il ne fonctionne pas, toute aide?
- Ce qui ne fonctionne pas? Ajouter un
do - catch
bloc pour obtenir les informations d'erreur. Par la voie,Bundle
aURL
liées à l'API pour récupérer les ressources.
Vous devez vous connecter pour publier un commentaire.
Votre problème ici est que vous avez la force de les déballer les valeurs et, dans le cas d'une erreur que vous ne pouvez pas savoir d'où il vient.
Au lieu de cela, vous devez gérer les erreurs et en toute sécurité déballer vos options.
Et comme @vadian, à juste titre, note dans son commentaire, vous devez utiliser
Bundle.main.url
.Lors du codage dans Swift, généralement,
!
est une odeur de code. Bien sûr il y a des exceptions (IBOutlets et autres), mais essayez de ne pas utiliser la force d'ôter avec!
vous-même et toujours dérouler en toute sécurité à la place.catch
qui a attiré l'erreur en provenance de JSONSerialization. Votre fichier JSON est susceptible d'être invalide. Voir: toujours gérer les erreurs. 🙂usually, ! is a code smell ... try to not use force unwrapping with ! yourself and always unwrap safely instead.
+1La Swift 5 /iOS 12.3 code ci-dessous montre une réécriture de votre méthode qui évite de force déballer sur les valeurs facultatives et les poignées doucement les erreurs potentielles: