Hallo,
aktuell beschäftige ich mich damit folgendes JSON Paket zu decoden:
Jetzt mal abgesehen davon das ich das Paket sicherlich noch kompakter verschicken könnte und aufbessern könnte habe gibt es ein paar Dinge bei denen ich eure Hilfe brauch. Ich schaffe es nämlich an sämtliche Daten aus diesem Paket ran zu kommen und die Daten in Variablen zu speichern. Nur leider sieht das alles nicht sonderlich schön aus und ich würde meinen Code den ihr im folgenden seht gerne aufgeräumter haben. Aber jetzt erstmal der Code:
Alles anzeigen
Ihr seht ja in dem structure StepTwo das ich mit question_info und user_info zwei weitere unterschiedliche Structures anspreche um an die Daten zu kommen. Die beiden Variablen question_info und user_info sind zwei Arrays die in dem JASON-Paket enthalten sind. Es wäre sehr schön wenn es irgendwie gehen würde das ich mir das structure StepFour schenken könnte und alle meine Daten aus BEIDEN ARRAYS aus StepThree bekommen könnte. Aktuell kriege ich das aber leider nicht anders hin.
Außerdem habe ich das Problem das ich in der Konsole zusätzlich zu dem was ich auslesen möchte und was auch klappt, das hier mit angezeigt wird:
Gibt es ne Möglichkeit diese Konsolen Ausgabe zu verhindern ?
aktuell beschäftige ich mich damit folgendes JSON Paket zu decoden:
Quellcode
- {"status":"ok","time":1530563992,"data":[{"question_info":{"id":"1","title":"Ja Moin","pictures":["GahNiem0","iePh5che","Ooroo7oo","up6pho4A"],"date":"1530094596"},"user_info":{"id":"29","username":"pascalpru","profilepicture":"upload2\/profilbild_user29.jpg"}},{"question_info":{"id":"2","title":"Was geht","pictures":["Oodei3pu","ohreiTe5","reec2Bai"],"date":"1530094734"},"user_info":{"id":"32","username":"JoELCHAPO","profilepicture":"upload2\/profilbild_user32.png"}},{"question_info":{"id":"3","title":"Valence ist cool","pictures":["Ohbii3mu","thae0Eej"],"date":"1530094877"},"user_info":{"id":"34","username":"MaxMusti","profilepicture":"upload2\/profilbild_user34.png"}},{"question_info":{"id":"4","title":"Coole Schuhe","pictures":["Taebui9N","saeSh6ip","up6pho4A"],"date":"1530094887"},"user_info":{"id":"35","username":"philpru98","profilepicture":"upload2\/profilbild_user35.png"}},{"question_info":{"id":"5","title":"Welcher Schrank?","pictures":["Ejohjuo8","eiHeePh7","naiza3Fe","Woh0yoof"],"date":"1530094897"},"user_info":{"id":"36","username":"Test","profilepicture":""}},{"question_info":{"id":"6","title":"Wo soll ich hin gehen?","pictures":["tae9Daet","Aenie3oh"],"date":"1530094907"},"user_info":{"id":"37","username":"Sonja","profilepicture":""}},{"question_info":{"id":"7","title":"Welchen Urlaub?","pictures":["pheWohs6","eiph1Eeg"],"date":"1530095252"},"user_info":{"id":"38","username":"Kalle","profilepicture":""}},{"question_info":{"id":"8","title":"Handy?","pictures":["oom0Nu0n","xee7Thah","ak0EeP1U"],"date":"1530095262"},"user_info":{"id":"39","username":"Manny","profilepicture":""}},{"question_info":{"id":"9","title":"Was ist geiler?","pictures":["uQu0aigh","ienej3Wi","FahH2ohv","yohThie1","ahKai2Ro"],"date":"1530095360"},"user_info":{"id":"40","username":"Tobi","profilepicture":""}},{"question_info":{"id":"10","title":"Was soll ich essen?","pictures":["Cexom0ii","ix8IkeiR","Quughu2i","ulaeCoR7"],"date":"1530095367"},"user_info":{"id":"41","username":"derced","profilepicture":null}}]}
Jetzt mal abgesehen davon das ich das Paket sicherlich noch kompakter verschicken könnte und aufbessern könnte habe gibt es ein paar Dinge bei denen ich eure Hilfe brauch. Ich schaffe es nämlich an sämtliche Daten aus diesem Paket ran zu kommen und die Daten in Variablen zu speichern. Nur leider sieht das alles nicht sonderlich schön aus und ich würde meinen Code den ihr im folgenden seht gerne aufgeräumter haben. Aber jetzt erstmal der Code:
Quellcode
- import UIKit
- import PlaygroundSupport
- PlaygroundPage.current.needsIndefiniteExecution = true
- struct StepOne: Codable {
- var data: [StepTwo]?
- }
- struct StepTwo: Codable {
- var question_info: StepThree?
- var user_info: StepFour?
- }
- struct StepThree: Codable {
- var title: String
- var id: String
- enum CodingKeys: String, CodingKey {
- case title
- case id
- }
- init(from decoder: Decoder) throws {
- let valueContainer = try decoder.container(keyedBy: CodingKeys.self)
- self.title = try valueContainer.decode(String.self, forKey: CodingKeys.title)
- self.id = try valueContainer.decode(String.self, forKey: CodingKeys.id)
- print("User mit der ID \(id), sagt \(title)")
- }
- }
- struct StepFour: Codable {
- var username: String
- enum CodingKeys: String, CodingKey {
- case username
- }
- init(from decoder: Decoder) throws {
- let valueContainer = try decoder.container(keyedBy: CodingKeys.self)
- self.username = try valueContainer.decode(String.self, forKey: CodingKeys.username)
- print("\(username) ")
- }
- }
- extension URL {
- func withQueries(_ queries: [String: String]) -> URL? {
- var components = URLComponents(url: self, resolvingAgainstBaseURL: true)
- components?.queryItems = queries.compactMap{ URLQueryItem(name: $0.0, value: $0.1) }
- return components?.url
- }
- }
- let baseURL = URL(string: "http://192.168.178.94/v0.1/questions.php")!
- let query: [String: String] = [
- "api_key": "DEMO_KEY",
- ]
- let url = baseURL.withQueries(query)!
- let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
- let decoder = JSONDecoder()
- if let data = data,
- let dictionary = try? decoder.decode(StepOne.self, from: data) {
- print(dictionary)
- }
- }
- task.resume()
Außerdem habe ich das Problem das ich in der Konsole zusätzlich zu dem was ich auslesen möchte und was auch klappt, das hier mit angezeigt wird:
Quellcode
- StepOne(data: Optional([__lldb_expr_127.StepTwo(question_info: Optional(__lldb_expr_127.StepThree(title: "Ja Moin", id: "1")), user_info: Optional(__lldb_expr_127.StepFour(username: "pascalpru"))), __lldb_expr_127.StepTwo(question_info: Optional(__lldb_expr_127.StepThree(title: "Was geht", id: "2")), user_info: Optional(__lldb_expr_127.StepFour(username: "JoELCHAPO"))), __lldb_expr_127.StepTwo(question_info: Optional(__lldb_expr_127.StepThree(title: "Valence ist cool", id: "3")), user_info: Optional(__lldb_expr_127.StepFour(username: "MaxMusti"))), __lldb_expr_127.StepTwo(question_info: Optional(__lldb_expr_127.StepThree(title: "Coole Schuhe", id: "4")), user_info: Optional(__lldb_expr_127.StepFour(username: "philpru98"))), __lldb_expr_127.StepTwo(question_info: Optional(__lldb_expr_127.StepThree(title: "Welcher Schrank?", id: "5")), user_info: Optional(__lldb_expr_127.StepFour(username: "Test"))), __lldb_expr_127.StepTwo(question_info: Optional(__lldb_expr_127.StepThree(title: "Wo soll ich hin gehen?", id: "6")), user_info: Optional(__lldb_expr_127.StepFour(username: "Sonja"))), __lldb_expr_127.StepTwo(question_info: Optional(__lldb_expr_127.StepThree(title: "Welchen Urlaub?", id: "7")), user_info: Optional(__lldb_expr_127.StepFour(username: "Kalle"))), __lldb_expr_127.StepTwo(question_info: Optional(__lldb_expr_127.StepThree(title: "Handy?", id: "8")), user_info: Optional(__lldb_expr_127.StepFour(username: "Manny"))), __lldb_expr_127.StepTwo(question_info: Optional(__lldb_expr_127.StepThree(title: "Was ist geiler?", id: "9")), user_info: Optional(__lldb_expr_127.StepFour(username: "Tobi"))), __lldb_expr_127.StepTwo(question_info: Optional(__lldb_expr_127.StepThree(title: "Was soll ich essen?", id: "10")), user_info: Optional(__lldb_expr_127.StepFour(username: "derced")))]))