Mein UIImage kann im zweiten View-Controller nicht aktualisiert werdenIOS

Programmierung für iOS
Guest
 Mein UIImage kann im zweiten View-Controller nicht aktualisiert werden

Post by Guest »

Ich habe Probleme beim Versuch, ein Bild von meinem JSON-API-Aufruf zu laden. Im Grunde habe ich eine Funktion erstellt, die meine API aufruft und die Bild-URL abruft, die dann im zweiten View-Controller angezeigt wird. Im Moment kann ich deutlich erkennen, dass meine URL korrekt übergeben wird, da ich sie in der Konsole ausgedruckt habe. Wenn ich jedoch versuche, mein UIImage zu aktualisieren, erhalte ich die folgende Fehlermeldung:

Schwerwiegender Fehler: Beim Entpacken eines optionalen Werts wurde unerwartet Null gefunden
Dies ist meine Model-Klassendatei:

Code: Select all

class Exercise {
private var _id: Int!
private var _exerciseURL: String!
private var _imageUrl: URL!

var id: Int {

return _id
}

var exerciseURL: String {

return _exerciseURL
}

var imageURL: URL {

return _imageUrl // debug navigator is pointing at this line
}

init(name: String, description: String, id: Int) {
self._id = id

self._exerciseURL = "https://wger.de/api/v2/exerciseimage/?exercise=\(self.id)"

self._imageUrl = URL(string: "")
}

func parseImageData() {

let urlPath = _exerciseURL
let url = URL(string: urlPath!)

let task = URLSession.shared.dataTask(with: url!) { (data, response, error) in

if error != nil {
print("Error while parsing JSON")
}
else {

do {
if let data = data,
let fetchedImageData = try JSONSerialization.jsonObject(with: data, options: .mutableLeaves) as? [String:Any],
let images = fetchedImageData["results"] as? [[String: Any]] {

for eachImage in images {
let imageUrl = eachImage["image"] as! String
self._imageUrl = URL(string: imageUrl)
}

print(self.imageURL)

}
}
catch {
print("Error while parsing data.")
}
}
}
task.resume()
}

}
Hier ist mein zweiter View-Controller, der das Bild basierend auf seiner URL aktualisieren sollte.

Code: Select all

class ExerciseDetailViewController: UIViewController {

var exercise: Exercise!

@IBOutlet weak var exerciseImage: UIImageView!

override func viewDidLoad() {
super.viewDidLoad()

exercise.parseImageData()

let data = NSData(contentsOf: exercise.imageURL)
exerciseImage.image = UIImage(data: data as! Data)

// Do any additional setup after loading the view.
}

}
wann immer ich versuche, einen Kommentar abzugeben

Code: Select all

let data = NSData(contentsOf: exercise.imageURL)
exerciseImage.image = UIImage(data: data as! Data)
und dann meine Ergebnisse testen, kann ich sehen, dass meine Anweisung print(self.imageURL) die URL in der Konsole des zweiten VC korrekt anzeigt. Auch andere Variablen desselben Objekts wie Name usw., die nicht im Code angezeigt werden, werden durch andere Labels korrekt angezeigt.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post