gpt4 book ai didi

ios - 在 Segue - Swift 中使用 "OR"构造函数

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

Loads of answers (还有 here 和更多)关于触发一些不同功能的条件 segues 但我想做的只是使用 OR 运算符说“如果 segue 目的地是这个或这个,那么去这里”(值到被通过等保持不变)。

我正在尝试这个:

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
//if destination is VC1 OR VC2...

if let destVC = segue.destination as?
FavouriteDetailViewController || FavouriteExerciseDetailViewController

//... then pass the values as specified

destVC.favouriteWorkoutPassed = workoutToPass
destVC.favouriteObjectPassed = favouriteObjectToPass
}

正如我所想的||会充当“或”运算符,但我收到错误消息 Optional type 'FavouriteDetailViewController?'不能用作 bool 值;改为测试 '!= nil'

感谢任何帮助:-)

最佳答案

析取类型集(多种类型的“或”)在 Swift 中表示为协议(protocol)。

使用必要的属性/方法创建一个新协议(protocol):

protocol SomeProtocol { // FIXME: Name me properly
var favouriteWorkoutPassed: { get set }
var favouriteObjectPassed: { get set }
}

扩展所需的类型以符合此协议(protocol):

extension FavouriteDetailViewController: SomeProtocol {}
extension FavouriteExerciseDetailViewController: SomeProtocol {}

转换为协议(protocol)类型:

// ...

if let destVC = segue.destination as? SomeProtocol
destVC.favouriteWorkoutPassed = workoutToPass
destVC.favouriteObjectPassed = favouriteObjectToPass
}

// ...

关于ios - 在 Segue - Swift 中使用 "OR"构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50914420/

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