ViewController没有初始化器?

时间:2016-06-21 06:24:36

标签: ios swift enums swift2 segue

我试图从模型类访问枚举来编写一个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?

2 个答案:

答案 0 :(得分:2)

您必须初始化 updateType

的值

private let updateType:StartupManager.UpdateType = .OptionalUpdate例如

答案 1 :(得分:2)

您的问题在于:private let updateType: StartupManager.UpdateType 。在swift中,应该初始化所有值,然后才能使用它们。为此,您应该在构造函数(init)中初始化它,或者赋值如:private let updateType: StartupManager.UpdateType = value,或使用可选值。

最好的问候。