2016-05-15 116 views
1
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! CustomTableViewCell 

這是標準句子,它實現了表格視圖的單元格屬性。但裁縫(這是一個Swift分析器/棉絨)警告你不應該強制將CustomTableViewCell設置爲as!如果我以前用作as?,我必須將細胞的屬性設置爲cell!。但裁縫不警告[強制施放]應該避免施力。這是什麼原因?我如何實現單元格而不拆開單元格作爲cell! Swift中強制轉換操作的正確編程範例是什麼?定製強制轉換衝突

回答

1

我不熟悉「裁縫」,但最有可能的原因是它給你這個警告是因爲如果強制施放失敗,那麼顯然你的程序會崩潰,那永遠不會好。

as!運營商確實有它的位置,如果你100%確定你正在鑄造什麼類型。但是,即使這樣做最好是安全而不是遺憾,您應該使用guardif let聲明來處理失敗的演員。

if let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as? CustomTableViewCell { 
    //do what you like with cell 
} 

guard let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as? CustomTableViewCell else { 
    //abort current scope, return, break, etc. from scope. 
} 
//do what you like with cast cell 
+0

那麼,如何返回tableviewcell而不返回單元格。在if語句中,tableview函數沒有返回單元格的單元格聲明。 – mathema

+0

@mathema我不完全確定你在評論中的含義,但是如果你指的是守衛聲明的內容,我所寫的只是關於守衛聲明的通用評論,你仍然需要從函數中返回正確的類型!對不起,我承認它很模糊 - 生病編輯! –

0

我也有同樣的error.This是我如何固定我錯誤

讓細胞=(tableView.dequeueReusableCellWithIdentifier( 「小區」,forIndexPath:indexPath)作爲?CustomTableViewCell)!