我有一个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 }
这会引起错误!
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 }