gpt4 book ai didi

ios - Swift - 如何在 if 语句之外访问常量

转载 作者:行者123 更新时间:2023-11-28 11:34:35 25 4
gpt4 key购买 nike

我的意图是为动态 UITableView 创建不同的 UITableViewCells。我已经设置了单元格,我只需要添加一些逻辑来显示哪个单元格。

我决定使用返回单元格的 if 语句。这不知何故造成了错误,因为 func tableView 也需要返回“cell”,而 if 语句之外的代码无法访问 let cell = ...

我该如何解决这个问题?

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let date = dateArray[indexPath.row]
let title = titleArray[indexPath.row]
let desc = descArray[indexPath.row]

if notificationType == 1 {
let cell = tableView.dequeueReusableCell(withIdentifier: "TuvTavleViewCell") as! TuvTableViewCell

return cell
} else {
let cell = tableView.dequeueReusableCell(withIdentifier: "NotificationViewCell") as! NotificationViewCell

return cell
}

cell.setTitle(title: title)
cell.setDesc(desc: desc)
cell.setDate(date: date)

return cell
}

最佳答案

你问的是

How to get access of constant outside of if statement ?

由于范围修饰符,这实际上是不可能的,在任何类型的闭包中声明的任何内容在您离开该闭包时都会失去它的范围。

所以不可以,您不能从该语句中访问 if 语句中声明的任何内容。

现在对于你的案例如何解决当前的问题,你有两个选择要做。

您可以在 if 之外声明每个 cell,或者您可以在它的 case 中处理每个单元格。

您甚至可以通过应用一些协议(protocol)将其提升到另一个层次,为此我将向您展示一个简单的示例。

首先你需要这个协议(protocol)并且你需要在你的自定义单元类中确认它,

   protocol ConfigurableCell {
func set(title: String)
func set(desc: String)
func set(date: Date)
}

确认 class TuvTableViewCell: ConfigurableCellclass NotificationViewCell: ConfigurableCell

然后你可以做这样的事情。

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let date = dateArray[indexPath.row]
let title = titleArray[indexPath.row]
let desc = descArray[indexPath.row]
var cell: ConfigurableCell

if notificationType == 1 {
cell = tableView.dequeueReusableCell(withIdentifier: "TuvTavleViewCell") as! ConfigurableCell

} else {
cell = tableView.dequeueReusableCell(withIdentifier: "NotificationViewCell") as! ConfigurableCell
}
cell.set(date: date)
cell.set(desc: desc)
cell.set(title: title)
}

如您所见,这将允许我使用 if 之外的函数,但是根据您的问题的答案,我仍然没有在 cell 中声明if,之前声明过。

关于ios - Swift - 如何在 if 语句之外访问常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55891532/

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