【发布时间】:2019-06-15 06:46:44
【问题描述】:
我正在尝试读取字符串并将其转换为 int。我有一个解决方案,但它似乎太复杂了。我想我仍在努力解开包装。
我在下面发布了代码以及我在每个解决方案中遇到的编译器错误。
在本例中,我尝试从 UserDefaults 中读取字符串并转换为整数值。
static func GetSelectedSessionNum() -> Int32 {
var sessionNum : Int32 = 0
let defaults = UserDefaults.standard
let optionalString: String? = defaults.string(forKey: "selectedSessionNum")
// this works but it's too complicated
if let string = optionalString, let myInt = Int32(string) {
return myInt
}
return 0
// Error : optional String? must be unwrapped to a value of type 'String'
let t : String = defaults.string(forKey: "selectedSessionNum")
if let s : String = defaults.string(forKey: "selectedSessionNum") {
// error - Int32? must be unwrapped to a value of Int32
return Int32(s)
}
return 0
}
【问题讨论】:
-
您的工作解决方案并不复杂。这是正确的方法。你有两个选项要处理。顺便说一句 - 为什么将会话编号存储为字符串而不是将其存储为实际数字?这会让事情变得更简单。
标签: swift optional forced-unwrapping