gpt4 book ai didi

ios - swift 3 : How to assign variable of different option types without multiple if let statements?

转载 作者:可可西里 更新时间:2023-11-01 00:21:30 29 4
gpt4 key购买 nike

首先,如果标题含糊不清,我深表歉意。请随意更改它以符合问题描述。

我会尽力描述我的问题,但首先这里有一段代码:

if let vc = currentVC as? FirstViewController
{
vc.doSameMethod()
}
else if let vc = currentVC as? SecondViewController
{
vc.doSameMethod()
}
else if let vc = currentVC as? ThirdViewController
{
vc.doSameMethod()
}

基本上,我使用 if let 语句检查可选的 nil,然后解包并赋值。

我在所有 3 个 ViewController 中都有 doSameMethod() 函数,它们使用相同的函数名称执行几乎相同的任务。

我的问题是,我怎样才能避免重复代码:

if let vc = (currentVC as? FirstViewController || current as? SecondViewController || currentVC as? ThirdViewController)
{
vc.doSameMethod()
}

显然,上面的代码无法编译,但我想知道是否有一种更简单、更清晰的方法来通过检查多种类型来解包可选?

谢谢!

最佳答案

你可以用一个协议(protocol)来做到这一点。用所有 3 个 View Controller 之间的通用方法定义一个协议(protocol),并使它们符合它:

protocol MyViewControllerProtocol {
func doSameMethod()
}

class FirstViewController: UIController, MyViewControllerProtocol {
// your code
}

class SecondViewController: UIController, MyViewControllerProtocol {
// your code
}

class ThirdViewController: UIController, MyViewControllerProtocol {
// your code
}

用法:

if let vc = currentVC as? MyViewControllerProtocol {
vc.doSameMethod()
}

关于ios - swift 3 : How to assign variable of different option types without multiple if let statements?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40952756/

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