Ошибка с табличным представлением пользовательского интерфейса + асинхронно загруженные данные - PullRequest
0 голосов
/ 25 октября 2018

У меня есть таблица интерфейса пользователя с асинхронно загруженными данными из URL.для

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return (self.notificationsResponse?.data?.count)!
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let notification = notificationsResponse?.data![indexPath.row]
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! NotificationsViewCell
    cell.setNotification(notification: notification!)
    return cell
}

var notificationsResponse:NotificationsResponse?

Я получаю сообщение об ошибке типа

Тема 1: EXC_BAD_INSTRUCTION (код = EXC_I386_INVOP, субкод = 0x0)

В этой строке

return (self.notificationsResponse?.data?.count)!

И я не знаю, что с этим не так.Я сталкиваюсь с проблемой, может быть из-за плохого понимания на swift

Может кто-нибудь, пожалуйста, помогите мне?

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Вы можете написать строку, в которой вы используете принудительное развертывание, как это

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    guard let data = self.notificationsResponse?.data else { return 0 }
    return data.count
}

Редактировать: Другой ответ лучше на самом деле, ха-ха.Но охранники - также хороший способ предотвратить развертывание силы.

0 голосов
/ 25 октября 2018
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return (self.notificationsResponse?.data?.count)!
}

пожалуйста, измените

return self.notificationsResponse?.data?.count ?? 0
...