Swift之优雅安全访问UserDefaults

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

在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 {
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值