Skip to main content

Command Palette

Search for a command to run...

Swift中使用UserDefaults小纸条

Published
1 min read
Swift中使用UserDefaults小纸条

简单使用

在Swift中可以通过UserDefaults来存取配置信息非常方便。就像这样:

import Foundation

let defaults = UserDefaults.standard
defaults.set("hello name", forKey: "name")
print(defaults.string(forKey: "name"))

可以通过set方法存储各种内容,可以通过以下方法获取内容:

  • integer(forKey:) returns an integer if the key existed, or 0 if not.
  • bool(forKey:) returns a boolean if the key existed, or false if not.
  • float(forKey:) returns a float if the key existed, or 0.0 if not.
  • double(forKey:) returns a double if the key existed, or 0.0 if not.
  • object(forKey:) returns AnyObject? so you need to conditionally typecast it to your data type.

可以参考苹果官方的文档

设置一个enum简化使用

对于UserDefaults的使用,还可以考虑通过extension出一个enum来方便访问和管理。再加上自己的warp函数处理,会让你的使用方便很多。

extension UserDefaults{
    enum  UserDefaultsKeys:String {
        case name
        case age
        case isMarried
    }

    func getName()->String{
        return string(forKey: UserDefaultsKeys.name.rawValue) ?? ""
    }

    func setName(_ value: String){
        set(value, forKey: UserDefaultsKeys.name.rawValue)
    }

}

let defaults = UserDefaults.standard
defaults.setName("Hello World")
print(defaults.getName())

缺省值设置

对于Bool,它的bool返回缺省值为false。所以我们可以通过register来设置它的缺省值:

extension UserDefaults{
    enum  UserDefaultsKeys:String {
        case isAutoPronounce
    }

    func isAutoPronounce()->Bool{
        register(defaults: [UserDefaultsKeys.isAutoPronounce.rawValue : true])
        return bool(forKey: UserDefaultsKeys.isAutoPronounce.rawValue)
    }

    func setIsAutoPronounce(_ value: Bool){
        set(value, forKey: UserDefaultsKeys.isAutoPronounce.rawValue)
    }
}

SwiftUI使用

如果我们要在SwiftUI中Bind这个isAutoPronounce设置,可以使用@AppStorage声明

@AppStorage(UserDefaults.UserDefaultsKeys.isAutoPronounce.rawValue) var isAutoPronounce = true

这样在View里可以直接使用了

Toggle("Auto pronounce", isOn: $vm.isAutoPronounce)

More from this blog

Https 本地服务器小纸条

最近想要尝试一下Telegram mini app,在调试时需要使用https的服务。试来试去发现在Mac下完成一个简单的HTTPS服务器还是需要点奇奇怪怪的工具的。但是整体来讲非常简单。 准备证书 主要会使用mkcert来创建证书。首先安装mkcert。 brew install mkcert brew install nss # if use Firefox 将mkcert加入到本地root CA。 mkcert -install 生成证书 本地调试可以使用localhost或127.0...

Feb 21, 20241 min read
Https 本地服务器小纸条

macOS中使用Docker发布一个python项目的小纸条

最近写了一个Telegram Bot,它可以使用语音和文字与GPT进行交互,成为了我日常重度使用的工具。从练习英语的听说读,到日常的搜索使用上都让我有了不少收获。终于,日常跑在我笔记本上的日子就要过去了,我需要它能日常跑在我的服务器上,所以准备使用Docker整个image,使得我日常的更新和服务器的迁移更为简单些。所以写下这个小纸条,方便以后自己回来查看。 安装Docker 使用Homebrew安装简单方便: brew install --cask docker Homebrew会视你的机器...

Mar 10, 20233 min read
macOS中使用Docker发布一个python项目的小纸条

老房东的纸条箱

39 posts