Skip to content

Instantly share code, notes, and snippets.

@128keaton
Created November 12, 2016 03:28
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 128keaton/2e5725fa2abfa52d8c389476a839a58d to your computer and use it in GitHub Desktop.
Save 128keaton/2e5725fa2abfa52d8c389476a839a58d to your computer and use it in GitHub Desktop.
//
// ProfileManager.swift
// Logglu
//
// Created by Keaton Burleson on 11/11/16.
// Copyright © 2016 Keaton Burleson. All rights reserved.
//
import Foundation
class ProfileManager: NSObject{
// MARK: - Private Properties
fileprivate let defaults = UserDefaults(suiteName: "group.com.128keaton.test-strip")
fileprivate var delegate: ProfileManagerDelegate?
// MARK: - Public Properties
public var targetBloodSugar: String! {
didSet {
defaults?.set(targetBloodSugar, forKey: "target")
self.sync()
}
}
public var ratio: String! {
didSet {
defaults?.set(ratio, forKey: "ratio")
self.sync()
}
}
public var sensitivity: String! {
didSet {
defaults?.set(sensitivity, forKey: "sensitivity")
self.sync()
}
}
public var drEmail: String! {
didSet {
defaults?.set(drEmail, forKey: "dr-email")
self.sync()
}
}
public var drName: String! {
didSet {
defaults?.set(drName, forKey: "dr-name")
self.sync()
}
}
public var longLastingBrand: String! {
didSet {
defaults?.set(longLastingBrand, forKey: "longBrand")
self.sync()
}
}
public var longLastingUnits: String! {
didSet {
defaults?.set(longLastingUnits, forKey: "longUnits")
self.sync()
}
}
public var standardBrand: String! {
didSet {
defaults?.set(standardBrand, forKey: "fastBrand")
self.sync()
}
}
public var standardUnits: String! {
didSet {
defaults?.set(standardUnits, forKey: "fastUnits")
self.sync()
}
}
// MARK: - Booleans
public var useMetric: Bool! {
didSet {
defaults?.set(useMetric, forKey: "metric")
self.delegate?.updatedMetric(metric: useMetric)
self.sync()
}
}
public var roundInsulin: Bool! {
didSet {
defaults?.set(roundInsulin, forKey: "round")
self.sync()
}
}
public var useReminders: Bool! {
didSet {
defaults?.set(useReminders, forKey: "reminders")
self.sync()
}
}
// MARK: - Public Functions
func getFromDefaults(){
// whoah there nelly
//Explicit Properties
self.targetBloodSugar = defaults?.object(forKey: "target") as! String
self.ratio = defaults?.object(forKey: "ratio") as! String
self.sensitivity = defaults?.object(forKey: "sensitivity") as! String
self.drEmail = defaults?.object(forKey: "dr-email") as! String
self.drName = defaults?.object(forKey: "dr-name") as! String
self.longLastingBrand = defaults?.object(forKey: "longBrand") as! String
self.longLastingUnits = defaults?.object(forKey: "longUnits") as! String
self.standardBrand = defaults?.object(forKey: "fastBrand") as! String
self.standardUnits = defaults?.object(forKey: "fastUnits") as! String
//User Variables
self.useMetric = defaults?.bool(forKey: "metric")
self.roundInsulin = defaults?.bool(forKey: "round")
self.useReminders = defaults?.bool(forKey: "reminders")
}
override init() {
super.init()
self.getFromDefaults()
}
// MARK: - Private Helpers
fileprivate func sync(){
defaults?.synchronize()
}
}
protocol ProfileManagerDelegate {
func updatedMetric(metric: Bool!)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment