diff --git a/src/logic/DebugProfile.swift b/src/logic/DebugProfile.swift index 24211440..77385920 100644 --- a/src/logic/DebugProfile.swift +++ b/src/logic/DebugProfile.swift @@ -44,7 +44,7 @@ class DebugProfile { private static func appPreferences() -> String { return nestedSeparator + Preferences.all .sorted { $0.0 < $1.0 } - .map { $0.key + intraSeparator + Preferences.getAsString($0.key)! } + .map { $0.key + intraSeparator + Preferences.getAsString($0.key) } .joined(separator: nestedSeparator) } diff --git a/src/logic/Preferences.swift b/src/logic/Preferences.swift index 48729e83..8c81c0d1 100644 --- a/src/logic/Preferences.swift +++ b/src/logic/Preferences.swift @@ -61,19 +61,23 @@ class Preferences { defaults.register(defaults: defaultValues) } - static func get(_ key: String) -> Any? { + static func getObject(_ key: String) -> Any? { defaults.object(forKey: key) } - static func getAsString(_ key: String) -> String? { + static func getString(_ key: String) -> String? { defaults.string(forKey: key) } + static func getAsString(_ key: String) -> String { + String(describing: defaults.object(forKey: key)) + } + static func set(_ key: String, _ value: Any?) { defaults.set(value, forKey: key) } - static var all: [String: Any] { defaults.dictionaryRepresentation() } + static var all: [String: Any] { defaults.persistentDomain(forName: NSRunningApplication.current.bundleIdentifier!)! } } struct Theme { diff --git a/src/ui/preferences-window/LabelAndControl.swift b/src/ui/preferences-window/LabelAndControl.swift index 1884870a..6a23b056 100644 --- a/src/ui/preferences-window/LabelAndControl.swift +++ b/src/ui/preferences-window/LabelAndControl.swift @@ -2,7 +2,7 @@ import Cocoa class LabelAndControl: NSObject { static func makeLabelWithInput(_ labelText: String, _ rawName: String, _ width: CGFloat, _ suffixText: String? = nil, _ suffixUrl: String? = nil, _ validator: ((String) -> Bool)? = nil) -> [NSView] { - let input = TextField(Preferences.getAsString(rawName)!) + let input = TextField(Preferences.getString(rawName)!) input.validationHandler = validator input.delegate = input input.visualizeValidationState() @@ -13,19 +13,19 @@ class LabelAndControl: NSObject { static func makeLabelWithCheckbox(_ labelText: String, _ rawName: String, extraAction: ActionClosure? = nil) -> [NSView] { let checkbox = NSButton(checkboxWithTitle: "", target: nil, action: nil) - setControlValue(checkbox, Preferences.getAsString(rawName)!) + setControlValue(checkbox, Preferences.getString(rawName)!) return makeLabelWithProvidedControl(labelText, rawName, checkbox, extraAction: extraAction) } static func makeLabelWithDropdown(_ labelText: String, _ rawName: String, _ values: [String], _ suffixText: String? = nil) -> [NSView] { let popUp = NSPopUpButton() popUp.addItems(withTitles: values) - popUp.selectItem(withTitle: Preferences.getAsString(rawName)!) + popUp.selectItem(withTitle: Preferences.getString(rawName)!) return makeLabelWithProvidedControl(labelText, rawName, popUp, suffixText) } static func makeLabelWithSlider(_ labelText: String, _ rawName: String, _ minValue: Double, _ maxValue: Double, _ numberOfTickMarks: Int, _ allowsTickMarkValuesOnly: Bool, _ unitText: String = "") -> [NSView] { - let value = Preferences.getAsString(rawName)! + let value = Preferences.getString(rawName)! let suffixText = value + " " + unitText let slider = NSSlider() slider.minValue = minValue