实例成员不能用于嵌套类型的实例吗?

时间:2019-12-14 21:16:08

标签: ios swift enums uiviewcontroller

我在下面有以下代码,Xcode不断给我一个我不明白如何解决的错误。

class ViewController: UIViewController {
    private var manager: Manager?

    enum Link {
        case faq
        case tos

        var url: String {
            switch self {
            case .faq:
                return “www.”google.com
            case .tos:
                return manager!.isFreeUser ? “www”.google.com : “www”.duckduckgo.com
            }
        }
    }
}

错误是:

  

类型为'ViewController'的实例成员'manager'不能用于嵌套类型'ViewController.Link'的实例

1 个答案:

答案 0 :(得分:1)

您正试图在单独的代码环境中访问ViewController类的属性,即枚举Link

一种简单的解决方案是将您的值(在这种情况下,将manager作为枚举的参数):

enum Link {
    case faq
    case tos(Manager)

    var url: String {
        switch self {
        case .faq:
            return "www.google.com"
        case .tos(let manager):
            return manager.isFreeUser ? "www.google.com" : "www.duckduckgo.com"
        }
    }
}

每当您访问枚举值时,请传递您的manager属性。

print(Link.tos(self.manager!).url