当我尝试运行我的应用程序时,突然显示类的错误没有初始化程序。告诉我他们是否有任何代码问题或变量声明问题。任何人都可以告诉我这个错误背后的原因。
import UIKit
class ChecklistViewController: UITableViewController {
var row0item: ChecklistItem
var row1item: ChecklistItem
var row2item: ChecklistItem
var row3item: ChecklistItem
var row4item: ChecklistItem
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) - > Int
{
return 5
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) - > UITableViewCell
{
let cell = tableView.dequeueReusableCellWithIdentifier("ChecklistItem")
let label = cell!.viewWithTag(1000) as!UILabel
if indexPath.row == 0 {
label.text = row0item.text
} else if indexPath.row == 1 {
label.text = row1item.text
} else if indexPath.row == 2 {
label.text = row2item.text
} else if indexPath.row == 3 {
label.text = row3item.text
} else if indexPath.row == 4 {
label.text = row4item.text
}
configureCheckmarkForCell(cell!, indexPath: indexPath)
return cell!
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if let cell = tableView.cellForRowAtIndexPath(indexPath) {
if indexPath.row == 0 {
row0item.checked = !row0item.checked
} else if indexPath.row == 1 {
row1item.checked = !row1item.checked
} else if indexPath.row == 2 {
row2item.checked = !row2item.checked
} else if indexPath.row == 3 {
row3item.checked = !row3item.checked
} else if indexPath.row == 4 {
row4item.checked = !row4item.checked
}
configureCheckmarkForCell(cell, indexPath: indexPath)
}
tableView.deselectRowAtIndexPath(indexPath, animated: true)
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func configureCheckmarkForCell(cell: UITableViewCell, indexPath: NSIndexPath) {
var isChecked = false
if indexPath.row == 0 {
isChecked = row0item.checked
} else if indexPath.row == 1 {
isChecked = row1item.checked
} else if indexPath.row == 2 {
isChecked = row2item.checked
} else if indexPath.row == 3 {
isChecked = row3item.checked
} else if indexPath.row == 4 {
isChecked = row4item.checked
}
if isChecked {
cell.accessoryType = .Checkmark
} else {
cell.accessoryType = .None
}
}
}
答案 0 :(得分:0)
是的,您的变量声明存在问题。 如果您将变量声明为不可选(如您所做),则必须在覆盖init()中初始化它们。 如果将它们声明为可选项,则无需初始化它们:
var row0item: ChecklistItem?
var row1item: ChecklistItem?
var row2item: ChecklistItem?
var row3item: ChecklistItem?
var row4item: ChecklistItem?
访问行项目:
row0item!.aPropertyOrFunction