Swift Promises - Reload Data方法不绑定数据

时间:2015-08-13 03:32:35

标签: swift

我使用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

我如何解决此错误?

1 个答案:

答案 0 :(得分:0)

您的usersTableView是一个隐式解包的可选项(UITableView!)。当您致电dataSource设置者时,didSet属性观察者会尝试在reloadData()上呼叫usersTableView,但它是nil,因此您会遇到崩溃 - 您无法调用nil上的方法。

看起来您没有将插座连接到故事板中的usersTableView属性。或者,您可以在代码中的其他位置将其设置为nil。如果在加载视图控制器时usersTableView不是视图层次结构的一部分,这可能会自动发生,因为它是weak变量,但我希望您已将其添加为故事板中的子视图?