gpt4 book ai didi

swift - 将全局设置存储在 NSUserdefaults 中

转载 作者:行者123 更新时间:2023-11-30 13:50:53 25 4
gpt4 key购买 nike

我希望我的应用程序有自己的设置(例如语言设置)。我想将这些存储在 NSUserdefaults 中。读取这些设置并在应用程序中使用它们的最佳方式是什么?

目前我使用全局变量,它是通过函数在 Appdelegate 中设置的

func readNSUserDefaults() {

let userdefaults = NSUserDefaults.standardUserDefaults()
pushFav = userdefaults.valueForKey("pushFav") == nil ? true : userdefaults.valueForKey("pushFav")!.boolValue
pushVerband = userdefaults.valueForKey("pushVerband") == nil ? true : userdefaults.valueForKey("pushVerband")!.boolValue
standortAuto = userdefaults.valueForKey("standortAuto") == nil ? true : userdefaults.valueForKey("standortAuto")!.boolValue
languageSetting = userdefaults.stringForKey("language") ?? "auto"
if languageSetting == "auto" {
let autoLanguages = userdefaults.valueForKey("AppleLanguages")
if let autoLanguages = autoLanguages as? [String] {
print (autoLanguages)
if autoLanguages.count > 0 {
language = autoLanguages[0]
}
} else {
language = "en-US"
}
}
}

每当设置发生更改时,我都会更新 NSUserdefaults 和全局变量。有没有更优雅的方法来做到这一点?就像signleton 一样?

最佳答案

我的建议是 1. 使用您存储的默认值的所有键进行枚举,2. 只需在您需要的时间和地点从默认系统中查询您需要的内容。忘记更新和读取全局值或创建单例,因为两者都会给您的项目带来不必要的膨胀。

// Make this available globally to your project
// This will ensure your keys are always correct.
enum DefaultsKeys: String {
case PushFav
case PushVerband
case StandortAuto
case Language
}

// Use this in your project where you need to use the default values
// It is only two lines, and will always be consistent.
let userdefaults = NSUserDefaults.standardUserDefaults()
let pushFav = userdefaults.boolForKey(DefaultsKeys.PushFav.rawValue)

关于swift - 将全局设置存储在 NSUserdefaults 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34294667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com