2016-02-25 24 views
1

當我遍歷一個的tableView的所有單元格,在Objective-C:的cellForRowAtIndexPath在迅速和Objective-C

​​

它的工作,但在迅疾我代碼:

for index in 0...tableView.numberOfRowsInSection(0) { 
     let cell = tableView.cellForRowAtIndexPath(NSIndexPath(forRow: index, inSection: 0))! 
     cell.textLabel?.text = "\(index)" 
    } 

墜毀,並拋出一個解包零錯誤。看來只能得到Swift中的可見單元格,並且可以獲取Objective-C中的所有單元格。如何解釋這一點?

+0

您不應顯式調用'cellForRowAtIndexPath'來更改單元格文本標籤。 –

回答

4

行爲是一樣的。它只是在Objective C中使用零對象不會崩潰,而在Swift中它會崩潰。

您可以通過檢查單元格是否在Objective-C中並放置日誌來驗證此情況。在Swift中避免崩潰使用可選綁定。

E.g. if let cell = tableView.cellFor....

1

cellForRowAtIndexPath只會在目前可見的情況下返回單元格,這就是您的代碼導致崩潰的原因。要循環遍歷所有可見單元格,只需使用

for cell in tableView.visibleCells { 
    // do something 
}