Swift开发:UserDefaults本地存储优化使用方案

文章介绍了如何通过Swift扩展优化UserDefaults的使用,通过定义枚举和利用内置编译符号#function,使得存储和读取数据变得更简洁,例如可以更方便地设置和获取如Preference.startup这样的值。
摘要由CSDN通过智能技术生成

通常的UserDefaults本地存储api使用方式像这样比价繁琐

如下:

//写入
let defaults = UserDefaults.standard
defaults.set(20, forKey: "Age")
defaults.set(CGFloat.pi, "PI")
//读取
defaults.integer(forKey: "Age")

改为如下优化使用方式:
其中#function是Swift内置编译符号,指代包含这个符号的方法或属性名,这里等同于字符串startup

import Foundation

extension UserDefaults {
    // 通过下标使用枚举
    subscript<T: RawRepresentable>(key: String) -> T? {
        get {
            if let rawValue = value(forKey: key) as? T.RawValue {
                return T(rawValue: rawValue)
            }
            return nil
        }
        set { set(newValue?.rawValue, forKey: key) }
    }
    
    subscript<T>(key: String) -> T? {
        get { return value(forKey: key) as? T }
        set { set(newValue, forKey: key) }
    }
}

struct Preference {
    /** 开机启动 */
    static var startup: Bool {
        get { return UserDefaults.standard[#function] ?? false }
        set { UserDefaults.standard[#function] = newValue }
    }
}

使用方式如下,代码干净多了

写入
Preference.startup = true
读取
print(Preference.startup)

Swift内置编译符号说明:
#file 包含这个符号的文件路径
#line 符号出现的行号
#column 符号出现处的列
#function 包含这个符号的方法或属性名

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ArslanRobot

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值