gpt4 book ai didi

swift - 将 UITableViewCell 转换为其子类的 Swifty 方法是什么?

转载 作者:行者123 更新时间:2023-11-28 12:40:02 24 4
gpt4 key购买 nike

我试图在调用 dequeueReusableCellWithIdentifier 时将 UITableViewCell 转换为其子类。这就是我现在的做法:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let dogs = DBManager.getAllDogs()
let dog = dogs[indexPath.row]

let cell = tableView.dequeueReusableCellWithIdentifier(Constants.dogViewCellReuseIdentifier,
forIndexPath: indexPath) as! DogViewCell

cell.configureWithDog(dog)

return cell
}

但是,这种方法使用了丑陋的强制转换。所以我想出了这种更 Swifty 的方法:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let dogs = DBManager.getAllDogs()
let dog = dogs[indexPath.row]

if let cell = tableView.dequeueReusableCellWithIdentifier(Constants.dogViewCellReuseIdentifier,
forIndexPath: indexPath) as? DogViewCell {

cell.configureWithDog(dog)
return cell
} else {
return tableView.dequeueReusableCellWithIdentifier(Constants.dogViewCellReuseIdentifier,
forIndexPath: indexPath)
}

}

我也不喜欢这种方法,因为我正在编写更多代码以避免使用“!”强制展开可选类型转换。

执行此操作的正确且 Swifty 优雅的方法是什么?

最佳答案

问问自己:你是愿意在开发过程中崩溃,在告诉你问题出在哪里的确切行上,还是有一些古怪的行为,看起来有点奇怪,但你不知道为什么。

在您问题中的情况下,如果您错误地配置了单元格或 Storyboard,您只会崩溃。这不是用户或 Web 服务会为您搞砸的事情。

使用 !,进行一些适当的测试,这样您就知道您没有搞砸配置。当您搞砸时在开发过程中崩溃是有帮助的。

关于swift - 将 UITableViewCell 转换为其子类的 Swifty 方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39664622/

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