Условное приведение от UITableViewCell к UITableViewCell всегда успешно

Когда я компилирую свое приложение, я получаю предупреждение и не знаю, как это исправить или скрыть. Условное приведение из UITableViewCell к UITableViewCell всегда завершается успешно

Это моя часть кода, где появляется предупреждение.

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return arrayPDF.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    guard let cell = tableView.dequeueReusableCell(withIdentifier: "MyCellPDF", for: indexPath)
        as? UITableViewCell else { return UITableViewCell() }

    cell.textLabel?.text = arrayPDF[indexPath.row] + ".pdf"
    return cell
}

Эта часть моего кода генерирует предупреждение.

as? UITableViewCell else { return UITableViewCell() }

Все работает нормально. Я застрял.

Заранее спасибо!

2 ответа

Решение

По умолчанию, tableView.dequeueReusableCell(withIdentifier: "MyCellPDF", for: indexPath) возвращает UITableViewCell объект.

Итак, когда вы делаете:

guard let cell = tableView.dequeueReusableCell(withIdentifier: "MyCellPDF", for: indexPath) as? UITableViewCell else { return UITableViewCell() }

Вы применяете UITableViewCell возражать против UITableViewCell, XCode просто говорит вам, что это бесполезно.

Если ваш класс UITableViewCell, вы можете просто использовать:

let cell = tableView.dequeueReusableCell(withIdentifier: "MyCellPDF", for: indexPath)

Если это пользовательский класс, вы можете использовать охрану, но заменить as? UITableViewCell расставаться с as? MyCustomTableViewCellClass,

С Уважением,

IMACODE

Вы использовали guard .. else{}, поэтому он должен быть необязательным, я думаю, что функция, которая вам нужна, является первой, а не последней: open func dequeueReusableCell(withIdentifier identifier: String) -> UITableViewCell? // Используется делегатом для получения уже выделенной ячейки вместо выделения новой.

@available(iOS 6.0, *)
open func dequeueReusableCell(withIdentifier identifier: String, for indexPath: IndexPath) -> UITableViewCell // newer dequeue method guarantees a cell is returned and resized properly,

Вы можете исправить с одним из них следующим образом:

let cell = tableView.dequeueReusableCell(withIdentifier: "MyCellPDF", for: indexPath)

ИЛИ ЖЕ

guard let cell = tableView.dequeueReusableCell(withIdentifier: "MyCellPDF") else { return UITableViewCell() }
Другие вопросы по тегам