收到以下错误:
致命错误:在解包可选值时意外发现nil
我正在申请注册表格。该应用程序允许用户创建要添加到表单的自定义问题。目前,我使用Singleton设计模式在编辑选项卡和用于显示表单的选项卡之间传递问题列表。
我的单身人士课程:
class Singleton {
static let sharedInstance = Singleton()
var questions: [Question] = []
}
在编辑表单中,用户将按下按钮以更新人们可以填写的表单。这是代码,也是我收到错误的地方:
var mySingleton: Singleton!
@IBAction func updateForm(sender: AnyObject) {
for index in mySingleton.questions.count...questionsArray.count {
mySingleton.questions.append(questionsArray[index])
}
}
感谢您的帮助。
答案 0 :(得分:2)
这是发生错误的地方:
for index in mySingleton.questions.count...questionsArray.count {
mySingleton.questions.append(questionsArray[index])
}
循环的最终索引是questionsArray.count
。当您访问questionsArray[questionsArray.count]
时,您超出了数组的范围。永远不应该访问此索引。
相反,请将循环更改为以下内容:
for index in mySingleton.questions.count..<questionsArray.count {
mySingleton.questions.append(questionsArray[index])
}
唯一的区别是...
变为..<
,以便省略导致错误的最后一个索引。
编辑:在回顾代码之后,mySingleton
似乎永远不会被设置为等于任何东西。在执行此代码之前,您可以设置mySingleton = Singleton.sharedInstance
,或者只是删除mySingleton
并直接使用Singleton.sharedInstance
。