我希望我的应用程序拥有自己的设置(例如语言设置)。这些我想存储在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和全局变量。有没有更优雅的方式来做到这一点?和标志一样?
答案 0 :(得分:0)
我的建议是: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)
答案 1 :(得分:0)
swift中的getter setters会帮助你在这里...... 参考:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Properties.html
[object Geoposition]
.coords [object Coordinates]
.latitude
.longitude
.altitude
.accuracy
.altitudeAccuracy
.heading
.speed
.timestamp
这种情况应该有所帮助......希望如此!