我有一个程序,我收到一个带有电影列表的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)
有人可以解释为什么会这样吗?
答案 0 :(得分:1)
当您尝试解包nil的可选值时会发生此错误。在这种情况下,您的movieArray是一个可选值,这意味着它可能具有零值并且您保证在使用它之前您将拥有值,或者您将检查它是否有价值。
要解决此问题,您可以按 -
进行初始化var movieArray = [JSON]()
或检查数组是否为
//---- Another way
guard movieArray != nil else {
print("array is nil")
}
// Do stuff with movieAray
语句self.movieArray[num] = (x)
使用的movieArray未初始化,因此根本没有任何元素可能是num值,因此赋值抛出错误。
BR