我正在尝试读取字符串并将其转换为int。我有一个解决方案,但似乎太复杂了。我想我仍在努力将自己的头包裹起来。
我在下面发布了代码以及每种解决方案遇到的编译器错误。
在此示例中,我尝试从UserDefaults中读取一个字符串并将其转换为整数值。
var baseURL = "https://someAzureblobContainer"
var token = "somereallylongToken"
$("#imageID").attr('src', baseURL + "someFilename" + token)
答案 0 :(得分:0)
您需要强制转换为non optional Int32
才能匹配您的返回类型。
您可以使用任何可选的绑定方法,也可以将返回类型更改为Int32?
答案 1 :(得分:0)
如果您要使用简单的解决方案,请将selectedSessionNum
另存为Int
static func getSelectedSessionNum() -> Int32 {
return Int32(UserDefaults.standard.integer(forKey: "selectedSessionNum"))
}
否则,双重可选绑定
if let string = UserDefaults.standard.string(forKey: "selectedSessionNum"), let myInt = Int32(string) {
return myInt
}
或nil合并运算符
if let string = UserDefaults.standard.string(forKey: "selectedSessionNum") {
return Int32(string) ?? 0
}
是正确的方法
答案 2 :(得分:0)
如果要避免可选绑定,则可以使用flatMap
,当在Optional
上调用时,它可以将一个可选选项转换为另一个:
return UserDefaults.standard.string(forKey: "selectedSessionNum").flatMap(Int32.init) ?? 0
您还需要??
(零合并运算符)来解决初始化程序失败或用户默认值不存在的情况。