在设备上启动应用时,我的应用崩溃了。
一开始,我所有的数组都是空的。
错误:
线程1:致命错误:在展开可选值swift时意外发现nil
我该如何解决?
var CName: [String] = [""]
var BarCode: [String] = [""]
var CardNBR: [String] = [""]
var CardColorLogo = [UIColor]()
var UploadDateArray = [NSDate]()
var Comment: [String] = [""]
保存和加载功能
func saveColorLogo() {
UserDefaults.standard.set(NSKeyedArchiver.archivedData(withRootObject: CardColorLogo), forKey: "ColorsKey")
}
func loadColorLogo() {
let decodedColorsData = UserDefaults.standard.object(forKey: "ColorsKey") as? NSData
let colorsArray = (NSKeyedUnarchiver.unarchiveObject(with: decodedColorsData! as Data) as! NSArray)
CardColorLogo = colorsArray as! [UIColor]
}
答案 0 :(得分:3)
首先请遵守命名约定,例如,变量名以小写字母开头
var cardColorLogo = [UIColor]()
第二,不要在Swift中使用NSData
和NSArray
。有本机类型。
任何不小心写的感叹号都可能使应用程序崩溃。
发生错误是因为如果键不存在,object(forKey
返回nil
。顺便说一句,有一个data(forKey
方法具有相同的行为。
可选绑定结果并在失败时返回空数组
func loadColorLogo() {
if let decodedColorsData = UserDefaults.standard.data(forKey: "ColorsKey"),
let colorsArray = NSKeyedUnarchiver.unarchiveObject(with: decodedColorsData) as? [UIColor] {
cardColorLogo = colorsArray
} else {
cardColorLogo = []
}
}