美文网首页日常阅读
Swift开发:UserDefaults本地存储优化使用方案

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

作者: ArslanRobot | 来源:发表于2023-07-02 05:07 被阅读0次

通常的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 包含这个符号的方法或属性名

相关文章

网友评论

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

    本文链接:https://www.haomeiwen.com/subject/nwqxudtx.html