Как загрузить данные JSON в ячейки, используя Alamofire / SwiftyJSON? - PullRequest
0 голосов
/ 22 мая 2019

У меня есть ссылка на этот JSON , который мне нужен для заполнения ячеек данными внутри него. В основном это массив вопросов и ответов.

Я пробовал несколько решений в Интернете, но ни одно из них не соответствует моим потребностям.

Это часть кода, который я собрал, но не думаю, что он мне пригодится.

var preguntas = [String]()

func getPreguntas(url: String, parameters:[String:String]) {
        Alamofire.request(url, method: .get, parameters: parameters).responseJSON { response in

            if response.result.isSuccess {
                print("Success!")
                let preguntasJSON: JSON = JSON(response.result.description)
            } else {
                print("Error \(String(describing: response.result.error))")
            }
            self.tableView.reloadData()
        }
    }

func updatePreguntas(json: JSON) {
    for (pregunta, respuesta) in json["faqs"] {
        let preg = ("\(pregunta) \(respuesta)")

            preguntas.append(preg)
        }
    }

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

        if let cell = cell as? FAQTableViewCell {
            // TODO
            cell.preguntaLabel.text = preguntas[indexPath.row]
//            cell.respuestaLabel.text = respuestas[indexPath.row]
        }

        return cell
    }

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

Что мне нужно, так это иметь preguntas в качестве заголовка ячеек, а при касании показывать respuestas ниже при расширении ячейки. Но у меня есть расширяющаяся часть покрыта. Но я не могу получить эти две вещи из JSON.

1 Ответ

1 голос
/ 22 мая 2019

Использование Codable

var preguntas = [String]()


Alamofire.request(URL(string:"https://test-tokbox-assistcard.herokuapp.com/faqs")!, method: .get, parameters: [:], encoding: URLEncoding.default, headers: [:]).responseData { response in


    if response.result.isSuccess {

        guard let data = response.data else { return }

        do {

         let res = try JSONDecoder().decode(Empty.self, from: data)
         print(res.faqs)
         preguntas = res.fags.map { $0.pregunta }
        }
        catch {

            print(error)
        }
    }
    self.tableView.reloadData()
}

// MARK: - Empty
struct Empty: Codable {
    let faqs: [FAQ]
}

// MARK: - FAQ
struct FAQ: Codable {
    let pregunta, respuesta: String
}
...