UIViewController afficher ces donnée JSON
Bonjour tous le monde,
J'essais depuis quelques jours d'afficher des données récupérer en JSON.
Cette page est un détails.
Mon problème est que j'arrive a afficher mon json dans la console et a voir les donnée que je dois afficher. Mais je sais pas comment faire pour les afficher j'ai bien compris quant j'utilise un cell, mais là j'ai tous essayer.
Voilà mon code :
import UIKit
import SwiftyJSON
import MapKit
import CoreLocation
import SceneKit
import AlamofireImage
import Alamofire
class InfoSearchTableViewController: UIViewController {
var TabInfos = [String]()
@IBOutlet weak var ui_nom: UILabel!
@IBOutlet weak var ui_ville: UILabel!
@IBOutlet weak var map: MKMapView!
@IBOutlet weak var images: UIImageView!
@IBOutlet weak var imagesa: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
let idLabel = TabInfos[0]
print("dddd:",idLabel)
let url = "http://serveur/searchinfo.php?rechercheinfo=\(idLabel)"
print("dd:",url)
Alamofire.request(url, method: .get).validate().responseJSON { response in
switch response.result {
case .success(let value):
let json = JSON(value)
print(json)
case .failure(let error):
print(error)
}
}
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(true)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
Merci de votre aide,
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Qu'affiche ton json reçu ?
print(json) ?
Par exemple si tu as :
Pour y accéder avec SwiftyJson, tu fais simplement :
Tu as d'autres attribut, comme .int si c'est un integer, etc etc
Regarde la doc de SwiftyJson, elle est bien foutue
https://github.com/SwiftyJSON/SwiftyJSON#subscript
Sans plus d'explications sur quoi tu bloques exactement, la réponse est à mon avis trop grande. C'est clairement le genre de question auxquelles je n'ai pas du tout envie de répondre tant que tu n'auras pas donné plus d'infos sur quoi tu bloques exactement.
Est-ce que c'est parce que la récupération du JSON est asynchrone ? Clairement, y'a pas de reloadData d'appelé.
Est-ce que c'est parce que tu ne sais pas parser le JSON ? Tu n'as pas compris comment est formé un JSON et comment ça doit par conséquent se parser ? Parce que c'est relativement simple une fois qu'on a compris le truc. Mais dans ce cas là , nous le donner pourrais être utile quand même, car on ne va pas inventer le parsing.
Les afficher dans une cell, une UITableViewCell ? Tu as réussi à parser le JSON, mais c'est la construction du dataSource et que mettre dans le tableView:cellForRowAtIndexPath: ?
Apparemment, c'est une page de détails, donc c'est comment y aller depuis la sélection de ta cell ? Passage du tableView:didSelectItemAtIndexPath: puis un passage de données à ton prochain UIViewController via segue ?
je comprend ce que tu veux dire mais nom je fait passer un ID avec quoi je l'utiliser dans mon URL
let url = "http://serveur/searchinfo.php?rechercheinfo=\(idLabel)"
Après j'affiche que l'ID_produit que je veux, je ne fait pas de cell.
Mais quant je veux afficher le détail il son vide voilà la suite de mon code.
Pour parser un JSON pas de problème a ce niveau, je ne pense pas
Merci a vous,
Comment ça ils sont vide ? Qu'est-ce qui est vide ?
Tu ne nous dit pas ce qu'affiche ton print(json)
Tu es sûr que ton serveur renvoie bien les infos dedans ?
désolé voilà ce que cela m'affiche
dddd: 2027
dd: http://serveur/searchinfo.php?rechercheinfo=2027
puis après les modification voilà ce que cela me donne :
Tu devrais faire une copie d'écran de l'affichage du print(json) et nous la montrer.
En cliquant sur le bouton "Plus d'options de réponse" d'un post, tu peux accéder à des fonctions supplémentaire permettant d'intégrer une image avec le texte.
C'est vide ça ?
Parce que vu que le JSON que tu as montré semble grandement être un (NS)Array et pas un (NS)Dictionary at top level, ne connaissant pas SwiftyJSON, mais j'aurais tendance à dire qu'il faudrait faire plutôt :
Super ca fonctionne merci de votre aide
C'est le fait de remplacer json["someKey"] avec json[0]["someKey"] qui a corrigé ton problème ?