计数对象数组错误

时间:2018-07-26 06:09:19

标签: swift

我有此代码:

var activeCalculators = Calculators()

func numberOfCalculators()->Int{
        let activeCalculatorsArray = activeCalculators.calculators
        return activeCalculatorsArray!.count
    }


struct Calculators
{
    var calculators: [Calculator]?
    var activeCalculator: Int = -1
    var activeSummary: Bool = false
    var activeProfits: Bool = false

    public func getCalculators()-> [Calculator]
    {
        return calculators!
    }

    public mutating func setCalculators(calculators: [Calculator])
    {
        self.calculators = calculators
    }

    public func  getActiveCalculatorIndex()-> Int
    {
        return activeCalculator
    }

    public mutating func  setActiveCalculatorIndex( activeCalculator: Int)
    {
        self.activeCalculator = activeCalculator
    }

    public func  isActiveProfits()-> Bool
    {
        return activeProfits
    }

    public mutating func  setActiveProfits( activeProfits: Bool)
    {
        self.activeProfits = activeProfits
    }



    public func  isActiveSummary()-> Bool
    {
        return activeSummary
    }

    public mutating func setActiveSummary(activeSummary: Bool)
    {
        self.activeSummary = activeSummary
    }
}

override func viewDidLoad() {
print("XXXXXXXXXXXX: \(numberOfCalculators())")

}

当我运行函数:numberOfCalculators()时,出现错误: 线程1:致命错误:在展开可选值时意外发现nil

我正在尝试将此功能添加到我的课程中:

public func countCalculators()->Int{
        return (calculators?.count)!
    }

但是他们我有错误:

  

线程1:EXC_BAD_INSTRUCTION(代码= EXC_I386_INVOP,子代码= 0x0)

如何解决?

2 个答案:

答案 0 :(得分:1)

第一件事,正确解开包装:

func numberOfCalculators()->Int{
    return activeCalculatorsArray?.count ?? 0
}

public func countCalculators()->Int {
    return calculators?.count ?? 0 // Suggested by Alexander
}

然后,您需要set something before calling get。因此,在viewDidLoad中而不是首先调用numberOfCalculators()而不是调用setCalculators(),这样您将对计算器有一定的价值。

答案 1 :(得分:0)

根据您提供的信息,看来calculators在您阅读时为零。您可能需要进行一些检查,这些检查在您的getCalculators方法中...

guard let calcs = self.calculators else {
    print("No calculcators!")
    return [] // returns empty (no crash)
}

return calcs // return values

同时,很高兴调查一下为什么您没有任何计算器的原因。