2016-02-07 6 views
0

Я новичок в разработке Swift и после многих онлайн-уроков. Большинство этих учебных пособий относятся к более старым версиям Xcode, и код приводит к ошибкам. Может ли кто-нибудь объяснить, почему приведенный ниже код создает «UITableViewCell»? не конвертируется в UITableViewCella и как я исправляю эту проблему.Swift - UITableViewCell? не конвертируется в UITableViewCell

Я использую Xcode 7.

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCellWithIdentifier("customcell") as UITableViewCell 

     cell.textLabel?.text = array[indexPath.item] 
     return cell 
} 
+0

Говоря о «старых версий», вы должны добавить к вашему вопросу о версии вы используете. – vadian

+0

Привет, я использую xcode 7 @vadian – Jasper

+0

- это ваш «пользовательский элемент» на основе пользовательского производного класса UITableViewCell? – smozgur

ответ

1

Есть два способа

1)

func dequeueReusableCellWithIdentifier(_ identifier: String) -> UITableViewCell? 

, которая возвращает необязательный, так что вы должны разворачивать факультативно

let cell = tableView.dequeueReusableCellWithIdentifier("custom cell")! 

Другой способ является предпочтительным

2)

func dequeueReusableCellWithIdentifier(_ identifier: String, 
         forIndexPath indexPath: NSIndexPath) -> UITableViewCell 

, потому что она возвращает не опциональный

let cell = tableView.dequeueReusableCellWithIdentifier("custom cell", forIndexPath:indexPath) 
0

Функция возвращает UITableViewCell, в то время как вы возвращаете UITableViewCell? Проверьте тип ячейки , если ее тип UITableViewCell? , вам нужно вернуть ячейку!

(в то время как клетка является необязательным, то "!" Разворачивать его)

Смежные вопросы