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

无法访问Swift枚举值

如何解决《无法访问Swift枚举值》经验,为你挑选了1个好方法。

我在下面的类中定义了枚举:

public class MyError: NSError {

    public enum Type: Int {
        case ConnectionError
        case ServerError
    }

    init(type: Type) {
        super.init(domain: "domain", code: type.rawValue, userInfo: [:])
    }
}

当我尝试在我的测试中稍后检查错误时:

expect(error.code).to(equal(MyError.Type.ConnectionError.rawValue))

我收到编译错误: Type MyError.Type has no member ConnectionError

我在这里做错了什么想法?



1> ayaio..:

问题是,这Type是一个Swift关键字,您的自定义会Type混淆编译器.

在我在Playground中的测试中,您的代码生成了相同的错误.解决方案是更改Type任何其他名称.示例Kind:

public enum Kind: Int {
    case ConnectionError
    case ServerError
}

init(type: Kind) {
    super.init(domain: "domain", code: type.rawValue, userInfo: [:])
}

然后

MyError.Kind.ConnectionError.rawValue

按预期工作.

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