我使用promises通过JSON检索一些方法的信息。我用函数填充信息:
我试图在我的TableView中设置这些记录:
@IBOutlet weak var usersTableView: UITableView!
var dataSource: [UserResponse]? {
didSet {
self.usersTableView.reloadData()
}
}
override func viewDidLoad() {
super.viewDidLoad()
loadFriends()
// Do any additional setup after loading the view.
}
func loadFriends() {
//UserService.getFriends()
let (request, promise) = UserService.getFriends()
promise.then { user in
self.dataSource = user
}.catch{
error in
SCLAlertView().showError("Error", subTitle: error.localizedDescription)
}
}
但是正在返回错误:
致命错误:在解包可选值时意外发现nil
我如何解决此错误?
答案 0 :(得分:0)
您的usersTableView
是一个隐式解包的可选项(UITableView!
)。当您致电dataSource
设置者时,didSet
属性观察者会尝试在reloadData()
上呼叫usersTableView
,但它是nil
,因此您会遇到崩溃 - 您无法调用nil
上的方法。
看起来您没有将插座连接到故事板中的usersTableView
属性。或者,您可以在代码中的其他位置将其设置为nil
。如果在加载视图控制器时usersTableView
不是视图层次结构的一部分,这可能会自动发生,因为它是weak
变量,但我希望您已将其添加为故事板中的子视图?