在Swift中为了安全考虑,引入了Optional的类型, 但是在使用的时候可能需要获取到非Optional的值,如下
UserDefaults.standard.set("hello", forKey: "ly-test-key")
let str1 = UserDefaults.standard.string(forKey: "ly-test-key")
print(str1) // Optional("hello")
上面的代码中, 每次从UserDefautls获取string的时候得到的可能是nil或者存储的string值hello, 有时候还要考虑处理掉字符串中的optional描述或者将一个String?赋值给String类型的时候还要在处理。 还有另外一个考虑,就是UserDefaults的key值在swift中可以更加优雅的处理,而不必像Objective-C或其他语言那样定义一个普通的String常量。 下面直接上Swift代码
class DefaultKeys {
fileprivate init() { }
}
class DefaultKey<ValueType>: DefaultKeys {
public let key: String
init(_ key: String) {
self.key = key
}
}
extension UserDefaults {
subscript(key: DefaultKey<Int>) -> Int {
set {
set(newValue, forKey: key.key)
}
get {
return integer(forKey: key.key)
}
}
subscript(key: DefaultKey<

本文探讨了在Swift中如何安全地访问UserDefaults,利用Optional避免nil值问题,并展示了如何更优雅地处理key值,提高代码的可读性和安全性。通过提供的代码示例,可以看出这种方法在避免类型转换和处理nil值时的便利性。

1408

被折叠的 条评论
为什么被折叠?



