2014-09-06 2 views
0

Может кто-нибудь сказать мне, что в этом плохого? Это простое утверждение if.Невозможно выполнить оператор IF в UITableViewCell в Swift? Ошибка: «не конвертируется в MirrorDisposition»

Я получаю ошибку: 'NDTableViewCell' не конвертируется в зеркало диспозиция

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

    var cell:NDTableViewCell = tableView.dequeueReusableCellWithIdentifier(NDTableViewCell.identifier) as NDTableViewCell 

    if (cell == nil) { // Error happens here! 
     cell = NDTableViewCell.loadFromNib() 
    } 

    return cell 
} 

Спасибо!

ответ

2

Ячейка не является опционной, поэтому она никогда не будет равна нулю. Попробуйте это вместо этого, объявив ячейку как NDTableViewCell? а затем разворачивать его перед возвратом.

var cell:NDTableViewCell? = tableView.dequeueReusableCellWithIdentifier(NDTableViewCell.identifier) as? NDTableViewCell 

if (cell == nil) { // Error happens here! 
    cell = NDTableViewCell.loadFromNib() 
} 

return cell! 

Кроме того, увидеть этот ответ для получения более подробной информации о неудавшемся сравнении: float is not convertible to 'MirrorDisposition' Swift What is mirrordisposition?

+0

Этого ответ разбивает мое сердце. Это все-таки исправить. Но хо ужас ... Спасибо, Эран. – nmdias

+0

Dunno, если это то, что вас ужасает, но вы можете сделать его немного более чистым, отбросив объявление типа в ячейке: var cell = tableView.dequeueReusableCellWithIdentifier (NDTableViewCell.identifier) ​​как? NDTableViewCell –

+0

Это тоже! Мне, возможно, просто нужно будет прочитать об альтернативах с большим вниманием. Поэтому ужас уходит, я думаю. – nmdias

0

Почему не:

if let cell = tableView.dequeueReusableCellWithIdentifier(NDTableViewCell.identifier) as? NDTableViewCell { 
    return cell 
} 

var cell = NDTableViewCell.loadFromNib() 

//Configure cell 

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