Skip to content

Instantly share code, notes, and snippets.

@Nub
Last active August 29, 2015 14:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Nub/691d4421320949425275 to your computer and use it in GitHub Desktop.
Save Nub/691d4421320949425275 to your computer and use it in GitHub Desktop.
enum Settings: Int {
case Suffix
case SignificantDigits
case Count
func toString() -> String {
switch(self) {
case .Suffix:
return "Suffix"
case .SignificantDigits:
return "SignificantDigits"
default:
return String(self.toRaw())
}
}
func defaultValue() -> AnyObject {
switch(self) {
case .Suffix:
return "mm"
case .SignificantDigits:
return 2
default:
return String(self.toRaw())
}
}
}
class SettingsManager {
init() {
self[Settings.Suffix] = Settings.Suffix.defaultValue()
self[Settings.SignificantDigits] = Settings.Suffix.defaultValue()
}
subscript(setting: Settings) -> AnyObject {
get {
return _storage[setting]!
}
set(newValue) {
_storage[setting] = newValue
}
}
func save() {
let defaults = NSUserDefaults.standardUserDefaults()
for (key, value: AnyObject) in _storage {
defaults.setObject(value, forKey: key.toString())
}
defaults.synchronize()
}
func load() {
let defaults = NSUserDefaults.standardUserDefaults()
for i in 0..Settings.Count.toRaw() {
if let setting = Settings.fromRaw(i) {
_storage[setting] = defaults.objectForKey(setting.toString())
}
}
}
var _storage = Dictionary<Settings, AnyObject>()
}
var settingsManager = SettingsManager()
settingsManager[Settings.Suffix] = "km"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment