我试图从模型类访问枚举来编写一个switch case来执行segue。这是我的代码:
class LandingViewController: UIViewController {
// MARK: Private Structs.
private struct SegueIdentifier {
static let forcedUpdate = "forcedUpdate"
static let optionalUpdate = "optionalUpdate"
}
// MARK: Private variables.
private let updateType: StartupManager.UpdateType
// MARK: LifeCycle Methods.
override func viewDidLoad() {
super.viewDidLoad()
StartupManager.setupForLanding()
var segueIdentifier: String
switch updateType {
case .ForcedUpdate: segueIdentifier = SegueIdentifier.forcedUpdate
case .OptionalUpdate: segueIdentifier = SegueIdentifier.optionalUpdate
}
performSegueWithIdentifier(segueIdentifier, sender: nil)
}
setupForLanding()
用于检查startUpManager模型类以查看触发了哪些枚举。
class StartupManager: NSObject {
enum UpdateType {
case OptionalUpdate
case ForcedUpdate
}
// code to perform a check
if isForceUpdate {
completion(.ForcedUpdate)
} else {
completion(.OptionalUpdate)
}
但我一直收到一条错误,内容为LandingViewController has no initialisers
。如何在启动管理器中检查调用哪个案例然后在landingViewController中执行segue?
答案 0 :(得分:2)
您必须初始化 updateType
的值private let updateType:StartupManager.UpdateType = .OptionalUpdate例如
答案 1 :(得分:2)
您的问题在于:private let updateType: StartupManager.UpdateType
。在swift中,应该初始化所有值,然后才能使用它们。为此,您应该在构造函数(init)中初始化它,或者赋值如:private let updateType: StartupManager.UpdateType = value
,或使用可选值。
最好的问候。