gpt4 book ai didi

ios - 在解包可选变量时意外发现 nil,但变量有值

转载 作者:可可西里 更新时间:2023-11-01 00:38:58 25 4
gpt4 key购买 nike

我正在制作一个简单的待办事项列表应用程序。我创建了一个带有标签和 textview 的自定义 tableviewcell。标签用于标题,textview 用于描述。当我尝试运行该应用程序时,它崩溃并出现以下错误:

Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value

在线上抛出错误:

cell.taskTitle.text = task.title

但是上面一行的 print 语句打印出 "Optional("Task 1")"。这是为什么?

这是整个函数:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "taskCell", for: indexPath)
as! TaskTableViewCell

let task = taskList[indexPath.row]
print(task.title)
cell.taskTitle.text = task.title
cell.taskDescription.text = task.description

return cell
}

谢谢!

编辑:我的 taskList 全局声明为:

var taskList: [Task] = [
Task(title: "Task 1", desc: "Task 1 desc"),
Task(title: "Task 2", desc: "Task 2 desc"),
Task(title: "Task 3", desc: "Task 3 desc")
]

我的任务类:

class Task {
var title: String?
var description: String?

init(title: String, desc: String) {
self.title = title
self.description = desc
}

最佳答案

那是因为你找错地方了。 nil 不是 task.title。它是 cell.taskTitle

当然,现在您可能想知道为什么会这样。这是因为您错误地配置了单元格出队机制。你没有说明你是怎么做到的,所以我们不得不猜测。这里一个常见的错误是调用

tableView.register(TaskTableViewCell.self...

这实际上会阻止您的单元格从 Storyboard或 xib 文件中加载,因此您的单元格的所有 socket 都是 nil。如果您的代码中有这样一行,那么:

  • 如果该单元格是在 Storyboard 中设计的,请删除该行。

  • 如果您的单元格是在 xib 文件中设计的,则将该行替换为:

    tableView.register(UINib(nibName:"TaskTableViewCell", bundle:nil)...

关于ios - 在解包可选变量时意外发现 nil,但变量有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51792744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com