以下のコードの3行目でエラーが発生しました。
1 2 3 4 5 |
var cell = tableView.dequeueReusableCellWithIdentifier(CellIdentifier) as! UITableViewCell if (cell == nil) { cell = UITableViewCell(style: .Default, reuseIdentifier: CellIdentifier) } |
エラー内容
このようなエラーです。
1 |
Could not find an overload for '==' that accepts the supplied arguments |
原因
理由は最初のコードの1行目でas!
を使用しているため、cell
はoptional型ではないのに、3行目でnilチェックをしているためです。
スポンサーリンク
解決策
なので、解決策は以下の二つのどちらかです。
- 1行目の
as!
をas?
に変えてcell
をoptional型にする。 - nilではないのが明らかなので、3〜5行目を削除する。
私の場合は、他の場所で-registerClass:forCellReuseIdentifier
を使ってデフォルトのUITableViewCell
を登録しており、nilにはなり得なかったので、二つ目の方法を採用しました。
参考
Swift: could not find an overload for conversion that accepts supplied argument