2016-12-15 3 views
1

Я перешел на Swift 3.0 с 2.3 сегодня, и я исправил все сообщения об ошибках компилятора, но у меня проблемы с одним TableView. Я поставил точку останова после всех методов источника данных после того, как я позвонил reloadData(), и он входит в numberOfSections, но падает после того, как он покидает numberOfRowsInSection. cellForRowAt никогда не попадает. Он падает в AppDelegate, поэтому я не уверен, что это такое.Swift 3 - Сбой после numberOfRowsInSection в TableView

У меня не было этой проблемы при запуске Swift 2.3, если автоматическое преобразование в 3.0 не сделало что-то с этим TableView. Мои другие TableView s функционируют нормально.

Code

Crash

+1

добавить execptional точки останова, чтобы знать, где именно его сбои. прочитайте больше https://www.natashatherobot.com/xcode-debugging-trick/ –

+1

будет причина сбоя, напечатанная в консоли, проверьте, что –

+4

Вставить код вместо изображения. – KAR

ответ

1

Используйте следующий код

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     //if self.podcasts.count is nil then 0 will be returned. 
     if let count = self.podcasts.count{ 
      return count 
     } 
    return 0 
} 

Если вы загружаете что-то в подкастах асинхронно и перезагрузки TableView в то же время, то подкастов может быть нулевым, и который вызывает авария.

+0

Я инициализирую подкасты как 'var podcasts = [PodcastObj]()', поэтому он никогда не равен нулю. – Alan

+0

Опубликовать журнал, напечатанный в консоли Xcode. –

+0

ничего не отправлено на консоль. – Alan

0

Эта ошибка возникает, когда ваш массив пуст или имеет значение nil. Попробуйте загрузить строки, проверив подсчет, содержащийся в вашем списке массивов.

Следуйте ниже код, чтобы избежать этой ошибки: -

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    //Check array count here and return number of rows as same as array count otherwise return 0 rows 
    if self.podcasts.count > 0 { 
     return self.podcasts.count 
    } 
    else { 
     return 0 
    } 

Следуйте этим шаги всегда, чтобы избежать аварии, как это .. Счастливый Coding !!

0

Попробуйте это как счетчик будет автоматически управлять только объект получает nil Некоторые, как
return self.podcasts != nil ? self.podcasts!.count : 0