我目前正在學習如何以編程方式完全構建應用程序,並在過程中遇到了一些問題。使用Swift在TableView中迭代UITextViews使用Swift
我的應用程序將會是一個非常簡單的表單,用戶可以填寫它,並且會在包含信息的末尾生成PDF。對於基本信息,我有一個包含一組UITextfields的tableview,並且沒有任何問題通過它們迭代並將數據提取到一個字符串數組中。 對於下一節,用戶需要輸入更多的文本,所以我在tableview中使用了UITextviews。我想要做的是提取輸入的文本並將其保存到用於創建我的客戶對象的字符串數組中。執行此代碼如下:
func createGoals() {
for section in 0..<secondTableView.numberOfSections {
for row in 0..<secondTableView.numberOfRows(inSection: section) {
let indexPath = NSIndexPath(row: row, section: section)
let thisCell = secondTableView.cellForRow(at: indexPath as IndexPath) as! mySecondCell
if thisCell.textview.text == "Enter Goals" {
print("NO CONTENT IN FIELD")
let ac = UIAlertController(title: "But...But...", message: "If you have no goals, how can you progress?!", preferredStyle: .alert)
ac.addAction(UIAlertAction(title: "OK", style: .default))
present(ac, animated: true)
break
} else {
print("I MADE IT")
print("\(thisCell.textview.text!)")
newClient.goalArray.append(thisCell.textview.text)
print(newClient.goalArray)
}
}
}
}
但是,當它運行我得到錯誤信息「意外發現零,同時展開一個可選值」,並特別強調了這一行:
let thisCell = secondTableView.cellForRow(at: indexPath as IndexPath) as! mySecondCell
這代碼與我如何成功遍歷UITextfields幾乎完全相同,所有變化都是附加的變量,並且據我所見,沒有可選項。 另外,如果我沒有填寫UITextviews,它將顯示UIAlertController,它只是在我刪除佔位符並填寫UITextviews時似乎有問題。 有沒有人有任何想法,爲什麼發生這種情況?如果需要,我可以提供更多的代碼。
調試器告訴你,secondTableView在你傳遞的行中不包含任何單元格。驗證secondTableView的行數應該有所幫助。 – ystack
我剛剛在調試器中嘗試過,並且它正在按照預期在部分0中返回4行。行肯定存在,那麼我的for循環可能會錯過一個? – EtherCode
mySecondCell似乎是一個實例,而不是一個類。您需要將單元格作爲類類型即。 let thisCell = secondTableView.cellForRow(at:indexPath as IndexPath)as! MyCellSubclass'或甚至更好的使用警衛'警衛let thisCell = secondTableView.cellForRow(在:indexPath作爲IndexPath)? mySecondCell else {return}' –