我有一个switch语句,根据type
变量显示不同的横幅。
switch type {
case HPBannerType.NetworkUnavailableBanner:
break
case HPBannerType.LocationServiceUnavailableBanner:
break
case HPBannerType.LocationServiceDisabledBanner:
break
default:
break
}
type
变量的类型为HPBannerType
,这是一个枚举:
enum HPBannerType: String{
case NetworkUnavailableBanner = "HPNetworkUnavailableBanner"
case LocationServiceUnavailableBanner = "HPLocationServiceUnavailableBanner"
case LocationServiceDisabledBanner = "HPLocationServiceDisabledBanner"
}
3种类型中没有默认类型。当我编写switch语句时,我必须列出所有案例以便更清楚地理解。这留下了结尾"默认"陈述无用状态并显示警告。
Default will never be executed
我怎么能沉默这个警告?
修改
@Eric D.拥有绝对正确的解决方案。但我发布这个的原因是因为
首先,我没有使用简写形式.XXX
,而是使用完整格式HPBannerType.XXX
,当我删除default
标记时,XCode给了我200个错误!
所以要纠正这个问题,你必须使用简写形式,以允许XCode识别其详尽的切换语句!或者你会得到错误。您可以尝试以下方法:
switch type {
case HPBannerType.NetworkUnavailableBanner:
break
case HPBannerType.LocationServiceUnavailableBanner:
break
case HPBannerType.LocationServiceDisabledBanner:
break
}
这会引起错误!
答案 0 :(得分:9)
切换枚举时不需要包含default
,因为编译器知道切换是详尽的(您已经涵盖了所有情况):
switch type {
case HPBannerType.NetworkUnavailableBanner:
break
case HPBannerType.LocationServiceUnavailableBanner:
break
case HPBannerType.LocationServiceDisabledBanner:
break
}
正如@vadian评论的那样,你也可以使用更短的语法,因为编译器已经知道type
是HPBannerType
类型的枚举:
switch type {
case .NetworkUnavailableBanner:
break
case .LocationServiceUnavailableBanner:
break
case .LocationServiceDisabledBanner:
break
}