Skip to content

This is UserDefaults's Wrapper Class for binding keys and values

License

Notifications You must be signed in to change notification settings

devikkim/UserDefaultsBinder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UserDefaultsBinder

This is UserDefaults's Wrapper Class for binding keys and values

1. Make wrapper class for combine your keys

// For binding your keys to UserDefaults
protocol KeyProtocol: RawRepresentable, CaseIterable {}

// This class is combine keys
class UserDefaultsBinder {
  static let shared = UserDefaultsBinder()
  
  // Set your user keys
  enum User: String, KeyProtocol {
    case name
    case nickname
  }

  // Set your app keys
  enum App: String, KeyProtocol {
    case uuid
    case version
  }
  
  let user = UserDefaultsWrapper<User>()
  let app = UserDefaultsWrapper<App>()
}

2. set

UserDefaultsBinder
  .shared
  .user
  .set("James Kim", .name)
  
UserDefaultsBinder
  .shared
  .user
  .set("Devik", .nickname)
  
let uuid = UUID().uuidString

// you can use chaining when set data
UserDefaultsBinder
  .shared
  .app
  .set(uuid, .uuid)
  .set("1.0.0", .version)
  .debugPrintAllElement()

3. get

guard let name = UserDefaultsBinder
  .shared
  .user
  .string(.name) else {
    return
  }
  
print(name) // "James Kim"

4. remove

UserDefaultsBinder
  .shared
  .user
  .remove([.name, .nickname])
      
UserDefaultsBinder
  .shared
  .app
  .removeAll()

About

This is UserDefaults's Wrapper Class for binding keys and values

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages