Swift - 初始化致命错误

Swift - Init fatal error

我正在尝试使用 ViewController2calculatecalculateBoundary 的函数来初始化值。我收到 运行 时间错误,如下图所示。

ViewController1

用户输入力值、spring刚度和spring数字,然后通过[=将其传递到forceView2stiffView2springNumView2 20=]。

2 public 函数

public func calculate (f:[Float], s:[Float], n:NSInteger) -> [Float]

public func calculateBoundary (inout f:[Float], s:[Float], n:NSInteger) -> (forceBound1:Float, forceBound2: Float, displacement:[Float])

ViewController2

import UIKit

class ViewController2: UIViewController , UITableViewDelegate, UITableViewDataSource {

    @IBOutlet var tableview2: UITableView!

    var forceView2 = [Float]()
    var stiffView2 = [Float]()
    var springNumView2 : NSInteger = NSInteger()

    var forceB1 : Float
    var forceB2 : Float
    var SpringD : [Float]

覆盖初始化(){

        if(isCheckedGlobal) {                          
            (forceB1,forceB2,SpringD) = calculateBoundary(&forceView2, stiffView2, springNumView2) }

        else {                        
        SpringD = calculate(forceView2, stiffView2, springNumView2)
        self.forceB1  = forceView2[0]
        self.forceB2 = 0.0 }

        super.init() 
    }

required init(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}
}

缺少所需的init,将其放在您的网点下方:

required init(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) 
}

如果 boolType == true 是多余的,则永远不要进行比较。

If isCheckedGlobal {...} 

如果您需要相反的比较,只需添加!前面:

If !isCheckedGlobal {...} 

if isCheckedGlobal {
     (forceB1,forceB2,springD) = calculateBoundary(&forceView2, stiffView2, springNumView2)
} else {
    springD = calculate(forceView2, stiffView2, springNumView2)
    forceB1  = forceView2[0]
    forceB2 = 0.0
}