dequeueReusableCell(withIdentifier:)
может вернуть nil
в случае, когда в пуле повторного использования нет ячеек (т. Е. При первом отображении таблицы). Когда он возвращает nil
, вы несете ответственность за создание экземпляра ячейки соответствующего типа.
Следовательно, этот блок кода:
guard let cell = tableView.dequeueReusableCell(withIdentifier: cellReuseIdentifier) as! SuitCell? else {
fatalError()
}
говорит: «Если вы получаете ячейку из пула повторного использования, и она не является экземпляром SuitCell
, cra sh, но nil
в порядке "(обратите внимание на приведение к необязательному)
Пока этот блок кода:
let cell = tableView.dequeueReusableCell(withIdentifier: cellReuseIdentifier) as! SuitCell
Говорит" Cra sh, если вы не получите экземпляр SuitCell
, или youn nil
", поэтому при первом отображении таблицы будет получено sh.
dequeueReusableCell(withIdentifier:)
на самом деле больше не используется. Вы бы использовали более новый (но все еще существует с iOS 6) вариант dequeueReusableCell(withIdentifier:,for:)
, так как он всегда возвращает ячейку, и вы можете ожидать, что это будет правильный класс (или вы быстро найдете свою проблему) в процессе разработки):
let cell = tableView.dequeueReusableCell(withIdentifier: cellReuseIdentifier, for: indexPath) as! SuitCell