Für eine eigenes Projekt, wollte ich eine Quiz App erstellen, die mit
einer MySQL Datenbank verbunden ist. Ich verstehe aber nicht ganz, wie ich auf die Daten zugreifen kann, um sie einem Label zuzuweisen.
Meine Frage:
Ich bekomme Daten mit
ausgegeben.
Ausgabe:
Aber irgendwie kann ich nicht auf die Daten im Dictionary zugreifen. Ich bekomme nur nil zurück. Ich glaube das liegt an dieser Zeile:
Wie kann ich auf die Daten zugreifen und sie in einem Label anzeigen lassen?
Danke im Voraus! Das nächste mal schöner eingebettet!
LG Valentin
gesamter Code:
ViewController.swift
einer MySQL Datenbank verbunden ist. Ich verstehe aber nicht ganz, wie ich auf die Daten zugreifen kann, um sie einem Label zuzuweisen.
Meine Frage:
Ich bekomme Daten mit
- let dataAsString = String(data: datas, encoding: .utf8)
- print(dataAsString)
ausgegeben.
Ausgabe:
2018-12-08 13:34:05.696392+0100 jsonPflegonautTableView[90401:4382088] libMobileGestalt MobileGestalt.c:890: MGIsDeviceOneOfType is not supported on this platform.
Optional("[{\"ID\":\"1\",\"Frage\":\"1\",\"Antwort1\":\"2\",\"Antwort2\":\"3\",\"Antwort3\":\"4\",\"Antwort4\":\"5\",\"Correct\":\"1\",\"Notiz\":\" 1234\",\"LernsektorID\":\"0\",\"LerneinheitID\":\"1\",\"LernbereichID\":\"1\",\"SchwierigkeitID\":\"1\",\"Redakteur\":\"\",\"created_at\":\"0000-00-00 00:00:00\"},{\"ID\":\"51\",\"Frage\":\" Welche der drei genannten Werte steuert den Atemantrieb?\",\"Antwort1\":\"pO2\",\"Antwort2\":\"pCO2\",\"Antwort3\":\"pH\",\"Antwort4\":\"K+\",\"Correct\":\"2\",\"Notiz\":\" Gesteuert wird die Atmung im wesentlichen durch das Gehirn beziehungsweise das Atemzentrum in der Medulla oblongata. Ausschlaggebend ist dabei die Reaktion von Chemorezeptoren auf den Kohlendioxid-Gehalt, beziehungsweise den Kohlendioxid-Partialdruck des Blutes. \\u00dcbersteigt dieser einen gewissen Schwellenwert, setzt der Atemreiz ein. Rezeptoren, die auf den pH-Wert des arteriellen Blutes sowie einen Sauerstoffmangel (Hypoxie) reagieren, haben nur eine zweitrangige Bedeutung als Atemreiz. \",\"LernsektorID\":\"3\",\"LerneinheitID\":\"0\",\"LernbereichID\":\"1\",\"SchwierigkeitID\":\"2\",\"Redakteur\":\"Valentin\",\"created_at\":\"15.03.2018 - 07:17\"},{\"ID\":\"52\",\"Frage\":\" sdfsdfg\",\"Antwort1\":\"adfg\",\"Antwort2\":\"asdf\",\"Antwort3\":\"asdf\",\"Antwort4\":\"asf\",\"Correct\":\"2\",\"Notiz\":\" Eselsbruecke\",\"LernsektorID\":\"1\",\"LerneinheitID\":\"1\",\"LernbereichID\":\"1\",\"SchwierigkeitID\":\"1\",\"Redakteur\":\"Valentin\",\"created_at\":\"30.10.2018 - 06:30\"}]")
Aber irgendwie kann ich nicht auf die Daten im Dictionary zugreifen. Ich bekomme nur nil zurück. Ich glaube das liegt an dieser Zeile:
- let decoder = JSONDecoder()
- let downloadedQuestions = try decoder.decode([Question].self, from: datas)
- print(downloadedQuestions)
[jsonPflegonautTableView.Question(id: nil, frage: nil, antwort1: nil, antwort2: nil, antwort3: nil, antwort4: nil, korrekteAntwort: nil, notiz: nil, lernSektorId: nil, lernEinheitId: nil, lernBereichId: nil, schwierigkeitId: nil, redakteur: nil, zeit: nil), jsonPflegonautTableView.Question(id: nil, frage: nil, antwort1: nil, antwort2: nil, antwort3: nil, antwort4: nil, korrekteAntwort: nil, notiz: nil, lernSektorId: nil, lernEinheitId: nil, lernBereichId: nil, schwierigkeitId: nil, redakteur: nil, zeit: nil), jsonPflegonautTableView.Question(id: nil, frage: nil, antwort1: nil, antwort2: nil, antwort3: nil, antwort4: nil, korrekteAntwort: nil, notiz: nil, lernSektorId: nil, lernEinheitId: nil, lernBereichId: nil, schwierigkeitId: nil, redakteur: nil, zeit: nil)]
Wie kann ich auf die Daten zugreifen und sie in einem Label anzeigen lassen?
Danke im Voraus! Das nächste mal schöner eingebettet!
LG Valentin
gesamter Code:
ViewController.swift
- import UIKit
- struct Question: Decodable {
- let id: Int?
- let frage: String?
- let antwort1: String?
- let antwort2: String?
- let antwort3: String?
- let antwort4: String?
- let korrekteAntwort: Int?
- let notiz: String?
- let lernSektorId: Int?
- let lernEinheitId: Int?
- let lernBereichId: Int?
- let schwierigkeitId: Int?
- let redakteur: String?
- let zeit: String?
- }
- class ViewController: UIViewController {
- @IBOutlet weak var listTableView: UITableView!
- override func viewDidLoad() {
- super.viewDidLoad()
- // MARK:-- JSON Connection
- let urlPath: String = "https://www.redaktion.pflegonaut.de/service.php"
- guard let url = URL(string: urlPath) else { return }
- URLSession.shared.dataTask(with: url) { (datas, urlResponse, error) in
- // MARK:-- JSON Data
- guard let datas = datas else {
- return print("something is wrong")
- }
- let dataAsString = String(data: datas, encoding: .utf8)
- print(dataAsString)
- do {
- let decoder = JSONDecoder()
- let downloadedQuestions = try decoder.decode([Question].self, from: datas)
- print(downloadedQuestions)
- // var countDatas = downloadedQuestions.count
- // print(countDatas)
- }
- catch let jsonErr {
- print("Error serializing json:", jsonErr)
- }
- }.resume()
- }