2016-07-02 16 views
1

Ich habe ein Programm, wo ich ein JSON mit einer Liste von Filmen erhalte und ich versuche, die Titel in ein Array zu setzen. Das fehlerhafte Teil des Codes ist die folgende:'fataler Fehler: unerwartet gefunden Null beim Entpacken eines optionalen Wertes' beim Lesen von JSON

var movieArray: [JSON]! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    Alamofire.request(.GET, "https://api.themoviedb.org/3/discover/movie", parameters: ["sort_by" : "popularity", "api_key" : "secret"]) 

    .validate() 
    .responseJSON { response in 
     switch response.result { 
      case .Success: 
       let json = JSON(response.result.value!) 
       //print(json) 
       let arraySize: Int = json["results"].count 
       for num in 0...arraySize { 
        let x = json["results"][num]["title"] 
        print(x) 
        self.movieArray[num] = (x) 
       } 
       print(self.movieArray[0]) 

      case .Failure(let error): 
       print(error) 
      } 
    } 

    self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell") 
} 

Wenn ich es laufen lasse, bekomme ich diesen Fehler:

Puccini for Beginners 
fatal error: unexpectedly found nil while unwrapping an Optional value 
(lldb) 

Kann jemand erklären, warum dies geschieht?

Antwort

1

Dieser Fehler tritt auf, wenn Sie versuchen, den optionalen Wert auszupacken, der null ist. In diesem Fall ist Ihr FilmArray ein optionaler Wert, was bedeutet, dass es keinen Wert haben kann und Sie garantieren, dass Sie vor der Verwendung Werte haben oder prüfen werden, ob es einen Wert hat.

es lösen Sie können es durch Initialisiere -

var movieArray = [JSON]() 

oder das Array prüfen

//---- Another way 
guard movieArray != nil else { 
    print("array is nil") 
} 

// Do stuff with movieAray 

Die Aussage Null ist self.movieArray[num] = (x) movieArray verwendet, die nicht initialisiert und daher überhaupt kein Element, was so kann num-Wert sein und daher der Zuweisungsfehler.

BR

Verwandte Themen