我有这样的代码:
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:致命错误:意外地找到零,同时打开一个可选的值
我正试着把这个功能添加到我的课堂上:
public func countCalculators()->Int{
return (calculators?.count)!
}但是他们我错了:
线程1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP,subcode=0x0)
你怎么能修好它?
发布于 2018-07-26 06:14:08
首先,正确地展开它:
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(),这样计算器就有了一定的价值。
发布于 2018-07-26 06:17:03
根据您提供的信息,在您阅读时,calculators似乎是零。您可能需要在您的getCalculators方法中进行一些检查.
guard let calcs = self.calculators else {
print("No calculcators!")
return [] // returns empty (no crash)
}
return calcs // return values同时,最好能调查一下为什么你一开始就没有计算器。
https://stackoverflow.com/questions/51532042
复制相似问题