use*_*242 6 enums uiviewcontroller ios swift
我在下面有以下代码,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"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
错误是:
“ViewController”类型的实例成员“manager”不能用于嵌套类型“ViewController.Link”的实例
cat*_*ore 12
我会将计算变量放入类级别:
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"
}
}
}
Run Code Online (Sandbox Code Playgroud)
您正在尝试访问ViewController
单独的代码环境中的类的属性,即 enum 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"
}
}
}
Run Code Online (Sandbox Code Playgroud)
每当您访问枚举值时,请传递您的manager
属性。
print(Link.tos(self.manager!).url
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5265 次 |
最近记录: |