Skip to content

Instantly share code, notes, and snippets.

@mingsai
Created February 12, 2016 17:51
Show Gist options
  • Select an option

  • Save mingsai/fdd44a7beaaadb18a29a to your computer and use it in GitHub Desktop.

Select an option

Save mingsai/fdd44a7beaaadb18a29a to your computer and use it in GitHub Desktop.
A sample class to show how I manage an apps user settings
//
// MNGAppUserSettings.swift
//
//
// Created by Tommie N. Carter, Jr., MBA on 12/7/15.
// Copyright © 2015 MING Technology. All rights reserved.
//
import UIKit
enum MNGSettingsKeys :String {
case ShowVideoFrontFacingCamera, ShareVideosAnonomously, AutoStartVideoStory, SaveVideosToLibrary, ShowPhotoFrontFacingCamera,SharePhotosAnonomously, AutoStartPhotoStory,SavePhotosToLibrary,ShowChaptersFrontFacingCamera, ShareChaptersAnonomously, AutoStartChapterStory, SaveChaptersThumbsToLibrary,ShowAudioFrontFacingCamera, ShareAudiosAnonomously, AutoStartAudioStory,SaveAudioThumbsToLibrary,MaximumVideoRecordingTime,UserRegisteredSuccessfully,PhoneVerified,EmailVerified,CloudUserId,AppUserId,UserRegistrationRecordId,VideoStoryAssetPath
static let allValues = [ShowVideoFrontFacingCamera, ShareVideosAnonomously, AutoStartVideoStory, SaveVideosToLibrary, ShowPhotoFrontFacingCamera,SharePhotosAnonomously, AutoStartPhotoStory,SavePhotosToLibrary,ShowChaptersFrontFacingCamera, ShareChaptersAnonomously, SaveChaptersThumbsToLibrary,ShowAudioFrontFacingCamera, ShareAudiosAnonomously, AutoStartAudioStory,SaveAudioThumbsToLibrary,MaximumVideoRecordingTime,UserRegisteredSuccessfully,PhoneVerified,EmailVerified,CloudUserId,AppUserId,UserRegistrationRecordId,VideoStoryAssetPath]
}
//MNG App User Settings Manager
class MNGAUSManager: NSObject {
static func defaultManager () -> MNGAUSManager {
return sharedInstance
}
static let sharedInstance = MNGAUSManager()
private let defaults = NSUserDefaults.standardUserDefaults()
deinit {
}
//MARK: Class Properties
//MARK: 1 - Front Facing Camera
func audioFrontFacingCamera() ->Bool {
return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.ShowAudioFrontFacingCamera.rawValue) ?? false
}
func chaptersFrontFacingCamera() ->Bool {
return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.ShowChaptersFrontFacingCamera.rawValue) ?? false
}
func photoFrontFacingCamera() ->Bool {
return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.ShowPhotoFrontFacingCamera.rawValue) ?? false
}
func videoFrontFacingCamera() ->Bool {
return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.ShowVideoFrontFacingCamera.rawValue) ?? false
}
//MARK: 2 - Share Anonomously
func audioShareAnonomously() ->Bool {
return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.ShareAudiosAnonomously.rawValue) ?? false
}
func chaptersShareAnonomously() ->Bool {
return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.ShareChaptersAnonomously.rawValue) ?? false
}
func photoShareAnonomously() ->Bool {
return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.SharePhotosAnonomously.rawValue) ?? false
}
func videoShareAnonomously() ->Bool {
return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.ShareVideosAnonomously.rawValue) ?? false
}
//MARK: 3 - AutoStartStory
func audioAutoStartStory() ->Bool {
return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.AutoStartAudioStory.rawValue) ?? false
}
func chaptersAutoStartStory() ->Bool {
return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.AutoStartChapterStory.rawValue) ?? false
}
func photoAutoStartStory() ->Bool {
return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.AutoStartPhotoStory.rawValue) ?? false
}
func videoAutoStartStory() ->Bool {
return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.AutoStartVideoStory.rawValue) ?? false
}
//MARK: 4 - SaveToLibrary
func audioThumbSaveToLibrary() ->Bool {
return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.SaveAudioThumbsToLibrary.rawValue) ?? false
}
func chapterThumbSaveToLibrary() ->Bool {
return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.SaveChaptersThumbsToLibrary.rawValue) ?? false
}
func photoSaveToLibrary() ->Bool {
return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.SavePhotosToLibrary.rawValue) ?? false
}
func videoSaveToLibrary() ->Bool {
return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.SaveVideosToLibrary.rawValue) ?? false
}
//MARK: 5 - Video Time Limits
func maximumVideoTimeLimit () -> NSTimeInterval {
return NSUserDefaults.standardUserDefaults().doubleForKey(MNGSettingsKeys.MaximumVideoRecordingTime.rawValue) ?? 6000.0
}
//MARK: Setter Methods
//MARK: 1 - Front Facing Camera
func newAudiosFrontFacingCamera(newBoolValue:Bool) {
defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.ShowAudioFrontFacingCamera.rawValue)
defaults.synchronize()
}
func newChaptersFrontFacingCamera(newBoolValue:Bool) {
defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.ShowChaptersFrontFacingCamera.rawValue)
defaults.synchronize()
}
func newPhotoFrontFacingCamera(newBoolValue:Bool) {
defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.ShowPhotoFrontFacingCamera.rawValue)
defaults.synchronize()
}
func newVideoFrontFacingCamera(newBoolValue:Bool) {
defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.ShowVideoFrontFacingCamera.rawValue)
defaults.synchronize()
}
//MARK: 2 - Share Anonomously
func newAudiosShareAnonmously(newBoolValue:Bool) {
defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.ShareAudiosAnonomously.rawValue)
defaults.synchronize()
}
func newPhotoShareAnonmously(newBoolValue:Bool) {
defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.SharePhotosAnonomously.rawValue)
defaults.synchronize()
}
func newChaptersShareAnonmously(newBoolValue:Bool) {
defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.ShareChaptersAnonomously.rawValue)
defaults.synchronize()
}
func newVideoShareAnonmously(newBoolValue:Bool) {
defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.ShareVideosAnonomously.rawValue)
defaults.synchronize()
}
//MARK: 3 - AutoStartStory
func newAudiosAutoStartStory(newBoolValue:Bool) {
defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.AutoStartAudioStory.rawValue)
defaults.synchronize()
}
func newChaptersAutoStartStory(newBoolValue:Bool) {
defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.AutoStartChapterStory.rawValue)
defaults.synchronize()
}
func newPhotoAutoStartStory(newBoolValue:Bool) {
defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.AutoStartPhotoStory.rawValue)
defaults.synchronize()
}
func newVideoAutoStartStory(newBoolValue:Bool) {
defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.AutoStartVideoStory.rawValue)
defaults.synchronize()
}
//MARK: 4 - SaveToLibrary
func newAudioThumbSaveToLibrary(newBoolValue:Bool) {
defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.SaveAudioThumbsToLibrary.rawValue)
defaults.synchronize()
}
func newChapterThumbSaveToLibrary(newBoolValue:Bool) {
defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.SaveChaptersThumbsToLibrary.rawValue)
defaults.synchronize()
}
func newPhotoSaveToLibrary(newBoolValue:Bool) {
defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.SavePhotosToLibrary.rawValue)
defaults.synchronize()
}
func newVideoSaveToLibrary(newBoolValue:Bool) {
defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.SaveVideosToLibrary.rawValue)
defaults.synchronize()
}
//MARK: 5 - Video Timelimit
func newVideoTimeLimit (newDoubleValue: NSTimeInterval) {
defaults.setDouble(newDoubleValue, forKey: MNGSettingsKeys.MaximumVideoRecordingTime.rawValue)
defaults.synchronize()
}
//MARK: Register User
func newUserRegistration (newBoolValue:Bool) {
defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.UserRegisteredSuccessfully.rawValue)
defaults.synchronize()
}
func isUserRegistered () -> Bool {
return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.UserRegisteredSuccessfully.rawValue) ?? false
}
//MARK: Device Verified
func newPhoneVerified (newBoolValue:Bool) {
defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.PhoneVerified.rawValue)
defaults.synchronize()
}
func isPhoneVerified () -> Bool {
return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.PhoneVerified.rawValue) ?? false
}
func newEmailVerified (newBoolValue:Bool) {
defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.EmailVerified.rawValue)
defaults.synchronize()
}
func isEmailVerified () -> Bool {
return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.EmailVerified.rawValue) ?? false
}
func newCloudUserId (newStringValue:String) {
defaults.setObject(newStringValue, forKey: MNGSettingsKeys.CloudUserId.rawValue)
defaults.synchronize()
}
func cloudUserId () -> String {
if let value = NSUserDefaults.standardUserDefaults().objectForKey(MNGSettingsKeys.CloudUserId.rawValue) {
return value as! String
}
return String()
}
func newAppUserId (newStringValue:String) {
defaults.setObject(newStringValue, forKey: MNGSettingsKeys.AppUserId.rawValue)
defaults.synchronize()
}
func AppUserId () -> String? {
if let value:String? = defaults.objectForKey(MNGSettingsKeys.AppUserId.rawValue) as? String where value?.characters.count > 0 {
return value!
} else {
self.newAppUserId(NSUUID().UUIDString)
if let newValue:String? = defaults.objectForKey(MNGSettingsKeys.AppUserId.rawValue) as? String where newValue?.characters.count > 0 {
return newValue!
}
}
return nil
}
func newUserRegistrationRecordId (newStringValue:String) {
defaults.setObject(newStringValue, forKey: MNGSettingsKeys.UserRegistrationRecordId.rawValue)
defaults.synchronize()
}
func UserRegistrationRecordId () -> String? {
return (defaults.objectForKey(MNGSettingsKeys.UserRegistrationRecordId.rawValue) as? String)! ?? ""
}
func newVideoStoryAssetPath (newStringValue:String) {
defaults.setObject(newStringValue, forKey: MNGSettingsKeys.VideoStoryAssetPath.rawValue)
defaults.synchronize()
}
func VideoStoryAssetPath () -> String? {
return (defaults.objectForKey(MNGSettingsKeys.VideoStoryAssetPath.rawValue) as? String)! ?? ""
}
func debugResetAllUserDefaults () {
defaults.removePersistentDomainForName(NSBundle.mainBundle().bundleIdentifier!)
defaults.synchronize()
}
func debugResetUserDefault(key: String) {
defaults.removeObjectForKey(key)
defaults.synchronize()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment