我在Cookie.swift中有这个功能
func returnMax() -> String {
var tmpMax: Int = 0
var typeMax: String = ""
for (symType, symCnt) in count {
if symCnt > tmpMax {
tmpMax = symCnt
typeMax = symType
}
}
print(typeMax)
return typeMax
}
我将一个按钮链接到我的GameViewController.swift作为动作。当点击该按钮时,它应该在日志中显示我在returnMax函数中找到的typeMax
。
@IBAction func ampAns(sender: AnyObject) {
cookie.returnMax()
}
但我没有得到预期的结果,而是获得了fatal error: unexpectedly found nil while unwrapping an Optional value (lldb)
。可能出现什么问题?谢谢!
答案 0 :(得分:1)
你已经声明你的变量cookie
像一个可选的,总是根据你的声明var cookie: Cookie!
有一个值(这样你就告诉编译器这个变量没有必要要检查非值,您可以确保在访问时它始终具有值),并且出于某种原因,您在初始化之前使用该变量。您必须首先初始化变量然后使用它。
或者您可以使用optional binding来避免运行时错误,在使用变量之前进行检查,如下所示:
@IBAction func ampAns(sender: AnyObject) {
if let cookie = self.cookie {
cookie.returnMax()
}
}
我希望这对你有所帮助。
答案 1 :(得分:-1)
您的问题是您没有将回报保存到变量中。
对GameViewController.swift的此更改应该可以解决您的问题。
@IBAction func ampAns(sender: AnyObject) {
let typeMax: String = cookie.returnMax()
}