我有一个程序,在其中接收带有电影列表的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")
}
当我运行它时,出现以下错误:
Puccini for Beginners
fatal error: unexpectedly found nil while unwrapping an Optional value
(lldb)
谁能解释为什么会这样?
当您尝试解开nil的可选值时,会发生此错误。在这种情况下,movieArray是一个可选值,这意味着它可能具有nil值,并且您保证在使用它之前将具有值,或者将检查它是否具有值。
要解决它,您可以通过-对其进行初始化
var movieArray = [JSON]()
或检查数组是否为零
//---- Another way
guard movieArray != nil else {
print("array is nil")
}
// Do stuff with movieAray
self.movieArray[num] = (x)
使用movieArray的语句尚未初始化,因此根本没有元素,而num值可能是任何值,因此分配抛出错误。
BR
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句