我正在尝试将泛型类型与switch case语句相关联,但我收到编译时错误。
if (mInterstitialAd.isReady)
{
DispatchQueue.main.async
{
mInterstitialAd.present(fromRootViewController: self)
}
}
非常感谢任何帮助。
答案 0 :(得分:3)
enum
本身必须声明为通用,而不是它的情况,你不能在case
声明中使用where子句,你需要在关联值上指定泛型类型约束。
enum TextEditEvent<T>{
case editingBegin(UITextField)
case editingEnd(UITextField, UITextField?)
case textChanged(String?, UILabel?, T:Object, Updateable, String)
}
或者,如果您希望T
在整个enum
中包含这些类型约束,不仅仅针对textChanged
案例,您可以像这样声明enum
:< / p>
enum TextEditEvent<T: Object, Updateable>{
case editingBegin(UITextField)
case editingEnd(UITextField, UITextField?)
case textChanged(String?, UILabel?, T, String)
}