我认为我在我的应用程序中强制转换导致它崩溃,(userDefaults.value(forKey: "timeDiffSecondsDefault") as! Int?)...但我真的不知道如何避免它.非常感谢任何指导!
func getProductionTime(store: Bool = false) {
let userDefaults = UserDefaults.standard
let productionTimeFormatter = DateFormatter()
productionTimeFormatter.timeZone = TimeZone(abbreviation: defaultTimeZone)
productionTimeFormatter.dateFormat = defaultTimeFormat
if let defaultTimeDiffSeconds: Int = userDefaults.value(forKey: "timeDiffSecondsDefault") as! Int? {
timeDiffSeconds = defaultTimeDiffSeconds
}
let productionTime = Calendar.current.date(byAdding: .second, value: timeDiffSeconds, to: Date())!
if store {
storeDateComponents(nowProdTime: productionTime)
}
productionTimeString = productionTimeFormatter.string(from: productionTime)
liveCounterButton.setTitle(productionTimeString, for: .normal)
}
最佳答案
使用返回非可选的专用 API
timeDiffSeconds = userDefaults.integer(forKey: "timeDiffSecondsDefault")
如果需要默认值 != 0 register
注意:永远不要将 value(forKey
与 UserDefaults
一起使用,除非你真的需要 KVC
关于swift - 如何避免这种 Force Cast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53197565/