当前位置:  开发笔记 > IOS > 正文

如何在Swift 2.0中静默"默认永远不会被执行"

如何解决《如何在Swift2.0中静默"默认永远不会被执行"》经验,为你挑选了1个好方法。

我有一个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
 }

这会引起错误!



1> ayaio..:

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
}

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有