gpt4 book ai didi

ios - didSelectRowAtIndexpath 嵌套 if 语句

转载 作者:可可西里 更新时间:2023-11-01 01:36:31 24 4
gpt4 key购买 nike

根据 indexPath.row 更改 didSelectRowAtIndexPath 操作的最佳方法是什么。

例如,5 行让我有这样的东西:

switch indexPath.row {
case 0:
if offlineMode {
// do this
} else {
// do something else
}
case 1:
if offlineMode {
// do this
} else {
// do something else
}
case 2:
if offlineMode {
// do this
} else {
// do something else
}
case 3:
if offlineMode {
// do this
} else {
// do something else
}
case 4:
if offlineMode {
// do this
} else {
// do something else
}
default:
// default behaviour
}

因此,我可以将这段代码分离到 doActionOnSelect(indexPath: NSIndexPath) 中,这样它就不会在 didSelectRowAtIndexPath 方法中。

但是,我可以看到这里有很多重复的代码。这就是我要尽量减少的。

这个问题更多地是围绕 MVC、职责以及从根本上构建我的代码的方式。

最佳答案

这都是高层次和概括性的,但希望对您有所帮助。

重构该代码的一种方法是将您的数据/状态(可能由那个大 switch 语句表示)放入其他某个对象,例如“模型”,并使用节/行输入询问该模型,返回预期的输出:也许是某种类型的单元格。或者可能是另一个专门用于您需要创建的单元格的模型对象。

另一个重构是使用 enum 来定义您的“模式”,并将其用于您的 switch 语句以及支持 TableView 部分和行的数据。由于 enum 在 Swift 中是详尽无遗的,因此您可以消除令人困惑的 default: 大小写。

另一种方法是通过模型对象表示每个细胞的状态。将数据提供给模型对象,然后在创建单元格时将模型对象传递给单元格。

无论如何,有很多方法可以给这只猫剥皮:

https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=Refactor+table+view

关于ios - didSelectRowAtIndexpath 嵌套 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36870349/

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