Условное приведение от 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() }