このコードで次のエラーが発生しました。
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell: UITableViewCell? = tableView.dequeueReusableCellWithIdentifier("Cell") as? UITableViewCell
エラー:「UITableViewCell?」からのダウンキャスト'UITableViewCell'は、オプションのみをアンラップします。 '!'を使うつもりでしたか?
何か案は?
Swift2.0
メソッドでdequeueReusableCellWithIdentifier
は次のように宣言されます。
@available(iOS 6.0, *)
func dequeueReusableCellWithIdentifier(identifier: String, forIndexPath indexPath: NSIndexPath) -> UITableViewCell
UITableViewCell
をUITableViewCell?
にキャストしないでください。以下のコードを参照してください。
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath)
// Configure the cell...
return cell
}
お役に立てれば!
Xcode 7以降、dequeueReusableCellWithIdentifier
は常にオプションではないUITableViewCell
を返します。
タイプを指定する必要はありません。簡潔に次のように書くことができます。
let cell = tableView.dequeueReusableCellWithIdentifier("Cell")
または、UITableViewCell
のカスタムサブクラスがある場合
guard let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as? SomeOtherCell else { fatalError("unexpected cell dequeued from tableView") }
CMessageCell=self.MessageTable.dequeueReusableCellWithIdentifier("CustomMessageCell") as! CustomMessageCell
代わりにこれを使用してください
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell")