2017-03-08 9 views
-1

Ich versuche eine Möglichkeit zu finden, einige Json-Daten auf Reddit zu analysieren und die Informationen in einer Tabellenansicht anzuzeigen. (https://api.reddit.com). Bisher ist es das, was mein Code wie folgt aussieht:Reddit: JSON Parsing in swift 3

var names: [String] = [] 
var comment: [String] = [] 

override func viewDidLoad() { 
     super.viewDidLoad() 
let url = URL(string: "https://api.reddit.com") 
     do{ 
      let reddit = try Data(contentsOf: url!) 
      let redditAll = try JSONSerialization.jsonObject(with: reddit, options: JSONSerialization.ReadingOptions.mutableContainers) as! [String : AnyObject] 
      if let theJSON = redditAll["children"] as? [AnyObject]{ 
       for child in 0...theJSON.count-1 { 
        let redditObject = theJSON[child] as! [String : AnyObject] 

        names.append(redditObject["name"] as! String) 
       } 
      } 
      print(names) 
     } 

     catch{ 
      print(error) 
     } 
    } 

//Table View 
func numberOfSections(in tableView: UITableView) -> Int { 
     return 1 

    } 

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return names.count 
    } 

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath) 

     //Configure cells... 
     cell.textLabel?.text = names[indexPath.row] 
     cell.detailTextLabel?.text = comments[indexPath.row] 


     return cell 
    } 

ich für eine Tatsache weiß, wird die Information tatsächlich durch den „redditALL“ konstant kommen, aber ich bin nicht sicher, was ich tue falsch nach dem jsonSerialization . Auch würde ich es wirklich schätzen, wenn es eine Art Verbindung gab, um mir zu helfen, JSON Parsing in schnell besserem zu verstehen, Dank.

+0

Können Sie Ihre JSON-Datenstruktur anzeigen? –

Antwort

0

zunächst nicht Data(contentsOf:) verwendet JSON von URL zu bekommen, weil es Ihre Main Fäden statt dieser Verwendung URLSession blockiert.

Jetzt zum Abrufen Ihrer children-Array müssen Sie zuerst auf data Wörterbuch zugreifen, da children ist drin. Also versuche es so.

0

JSON Parsing in Swift (Foundation) ist Schmutz-einfach. Sie rufen JSONSerialization.jsonObject(with:) und Sie erhalten ein "Objektdiagramm" zurück. Normalerweise ist es ein Wörterbuch oder ein Array, das andere Objekte enthält. Sie müssen über das Format der Daten Bescheid wissen, die Sie erhalten, um die Ergebnisse auf die richtigen Typen zu übertragen und das Objektdiagramm zu durchlaufen. Wenn Sie falsch codieren, wird der Code nicht wie erwartet ausgeführt. Sie sollten uns Ihre JSON-Daten zeigen. Es ist wahrscheinlich, dass es einen Konflikt zwischen Ihrem JASON und Ihrem Code gibt.