Ios 实例成员不能用于嵌套类型的实例?
我有下面的代码,Xcode一直给我一个错误,我不知道如何解决Ios 实例成员不能用于嵌套类型的实例?,ios,swift,enums,uiviewcontroller,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: r
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”的实例
您正试图在单独的代码环境中访问
ViewController
类的属性,即enum链接
一个简单的解决方案是将值作为参数传递给枚举,在本例中为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
我会将计算变量放入类级别:
class ViewController: UIViewController {
private var manager: Manager?
enum Link {
case faq
case tos
}
var link: Link = .tos
var url: String {
switch link {
case .faq:
return "www.google.com"
case .tos:
return manager!.isFreeUser ? "www.google.com" : "www.duckduckgo.com"
}
}
}