BarkSettings.swift 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. //
  2. // BarkSettings.swift
  3. // Bark
  4. //
  5. // Created by huangfeng on 2018/6/25.
  6. // Copyright © 2018 Fin. All rights reserved.
  7. //
  8. import DefaultsKit
  9. import UIKit
  10. enum BarkSettingKey: String {
  11. /// 存放key , 1.2.6 版本`之后`不再使用
  12. case key = "me.fin.bark.key"
  13. case servers = "me.fin.bark.servers"
  14. /// 1.2.6 版本`之前`保存当前 server 的 key,不再使用
  15. case currentServer = "me.fin.bark.servers.current"
  16. /// 1.2.6 版本`之后`用于保存 server 的 id
  17. case currentServerId = "me.fin.bark.servers.currentServerId"
  18. case selectedViewControllerIndex = "me.fin.bark.selectedViewControllerIndex"
  19. }
  20. class BarkSettings {
  21. static let shared = BarkSettings()
  22. private init() {}
  23. subscript(key: String) -> String? {
  24. get {
  25. let storeKey = Key<String>(key)
  26. return Defaults.shared.get(for: storeKey)
  27. }
  28. set {
  29. let storeKey = Key<String>(key)
  30. if let value = newValue {
  31. Defaults.shared.set(value, for: storeKey)
  32. }
  33. else {
  34. Defaults.shared.clear(storeKey)
  35. }
  36. }
  37. }
  38. subscript(key: BarkSettingKey) -> String? {
  39. get {
  40. return self[key.rawValue]
  41. }
  42. set {
  43. self[key.rawValue] = newValue
  44. }
  45. }
  46. subscript<T: Codable>(key: String) -> T? {
  47. get {
  48. let storeKey = Key<T>(key)
  49. return Defaults.shared.get(for: storeKey)
  50. }
  51. set {
  52. let storeKey = Key<T>(key)
  53. if let value = newValue {
  54. Defaults.shared.set(value, for: storeKey)
  55. }
  56. else {
  57. Defaults.shared.clear(storeKey)
  58. }
  59. }
  60. }
  61. subscript<T: Codable>(key: BarkSettingKey) -> T? {
  62. get {
  63. return self[key.rawValue]
  64. }
  65. set {
  66. self[key.rawValue] = newValue
  67. }
  68. }
  69. }
  70. let Settings = BarkSettings.shared