Valevale schrieb:
In der Funktions funktioniert es, aber ich hätte gerne Zugriff auf das Array außerhalb der Funktion. Das geht leider immer noch nicht
Macht doch eigentlich keinen Sinn, auf Daten zuzugreifen, die noch nicht geladen wurden, oder?
Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen
Valevale schrieb:
In der Funktions funktioniert es, aber ich hätte gerne Zugriff auf das Array außerhalb der Funktion. Das geht leider immer noch nicht
MCDan schrieb:
Warum möchtest Du unbedingt ausserhalb des Completion Blocks auf das Array zugreifen, wenn dieses noch nicht geladen wurde?Valevale schrieb:
In der Funktions funktioniert es, aber ich hätte gerne Zugriff auf das Array außerhalb der Funktion. Das geht leider immer noch nicht
Macht doch eigentlich keinen Sinn, auf Daten zuzugreifen, die noch nicht geladen wurden, oder?
Valevale schrieb:
Und wie bekomme ich das Array das Array dann da raus mit oder ohne dispatchQueue
Valevale schrieb:
Dann hat sich aber das Problem noch nicht geloest oder? Und wie bekomme ich das Array das Array dann da raus mit oder ohne dispatchQueue Habe gesehen, dass jemand folgendes gemacht hat:
Macht das Sinn, eine eigene Klasse mit einem weiteren Array zu erstellen, um da das sowieso schon bestehende JsonArray zu speichern? Auf jeden Fall scheint man hier Zugriff zu haben.
Alles anzeigenQuellcode
- import UIKit
- class Actors: Codable {
- let actors: [Actor]
- init(actors: [Actor]) {
- self.actors = actors
- }
- }
- class Actor: Codable {
- let name: String
- let description: String
- let dob: String
- let country: String
- let height: String
- let spouse: String
- let children: String
- let image: String
- init(name: String, description: String, dob: String, country: String, height: String, spouse: String, children: String, image: String) {
- self.name = name
- self.description = description
- self.dob = dob
- self.country = country
- self.height = height
- self.spouse = spouse
- self.children = children
- self.image = image
- }
- }
Alles anzeigenBrainfuck-Quellcode
- import UIKit
- class ViewController: UIViewController, UITableViewDataSource {
- final let url = URL(string: "http://microblogging.wingnity.com/JSONParsingTutorial/jsonActors")
- //--------------------------------
- private var actors = [Actor]()
- //--------------------------------
- @IBOutlet var tableView: UITableView!
- override func viewDidLoad() {
- super.viewDidLoad()
- downloadJson()
- tableView.tableFooterView = UIView()
- }
- func downloadJson() {
- guard let downloadURL = url else { return }
- URLSession.shared.dataTask(with: downloadURL) { data, urlResponse, error in
- guard let data = data, error == nil, urlResponse != nil else {
- print("something is wrong")
- return
- }
- print("downloaded")
- do
- {
- let decoder = JSONDecoder()
- let downloadedActors = try decoder.decode(Actors.self, from: data)
- self.actors = downloadedActors.actors
- DispatchQueue.main.async {
- self.tableView.reloadData()
- }
- } catch {
- print("something wrong after downloaded")
- }
- }.resume()
- }
matz schrieb:
Vermutlich weil er die asynchrone Programmierung noch nicht verstanden hat.MCDan schrieb:
Warum möchtest Du unbedingt ausserhalb des Completion Blocks auf das Array zugreifen, wenn dieses noch nicht geladen wurde? Macht doch eigentlich keinen Sinn, auf Daten zuzugreifen, die noch nicht geladen wurden, oder?Valevale schrieb:
In der Funktions funktioniert es, aber ich hätte gerne Zugriff auf das Array außerhalb der Funktion. Das geht leider immer noch nicht
Valevale schrieb:
Was würdet Ihr mit mir empfehlen? Habt Ihr ein Tipp für eine Lernbasis (Tutorials auf Youtube o.Ä., Udemy Kurse) für das Thema?