Loads of answers(还有here以及更多)关于条件segue,其中触发了一些不同的功能,但我想要做的只是使用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
}
正如我想的那样||将充当“OR”运算符,但我收到Optional type 'FavouriteDetailViewController?' cannot be used as a boolean; test for '!= nil' instead
任何帮助表示感谢: - )
答案 0 :(得分:1)
析取类型集(" OR"多种类型)在Swift中表示为协议。
使用必要的属性/方法创建新协议:
protocol SomeProtocol { // FIXME: Name me properly
var favouriteWorkoutPassed: { get set }
var favouriteObjectPassed: { get set }
}
扩展所需类型以符合此协议:
extension FavouriteDetailViewController: SomeProtocol {}
extension FavouriteExerciseDetailViewController: SomeProtocol {}
转换为协议类型:
// ...
if let destVC = segue.destination as? SomeProtocol
destVC.favouriteWorkoutPassed = workoutToPass
destVC.favouriteObjectPassed = favouriteObjectToPass
}
// ...