我有此代码:
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)
如何解决?
答案 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
同时,很高兴调查一下为什么您没有任何计算器的原因。