Как использовать UserDefaults SwiftUI?

Я пытаюсь создать text field, где текст внутри становится var и user default, которые будут отображаться все время.

Я попытался сделать его равным переменной, которую я установил в разделе. Но я действительно понятия не имею, что делаю.

@State private var Name = UserDefaults.standard.string(forKey: "name")

Section{
  TextField("Name", text: $Name)
  UserDefaults.standard.set($Name, forKey: "name")
}

person roCo    schedule 02.12.2019    source источник
comment
@State private var Name = UserDefaults.standard.string (forKey: name) {didSet {UserDefaults.standard.set (Name, forKey: name)}}   -  person fakiho    schedule 02.12.2019


Ответы (1)


struct Defaults {

static let (nameKey, addressKey) = ("name", "address")
static let userSessionKey = "com.save.usersession"
private static let userDefault = UserDefaults.standard

/**
   - Description - It's using for the passing and fetching
                user values from the UserDefaults.
 */
struct UserDetails {
    let name: String
    let address: String

    init(_ json: [String: String]) {
        self.name = json[nameKey] ?? ""
        self.address = json[addressKey] ?? ""
    }
}

/**
 - Description - Saving user details
 - Inputs - name `String` & address `String`
 */
static func save(_ name: String, address: String){
    userDefault.set([nameKey: name, addressKey: address], 
                    forKey: userSessionKey)
}

/**
 - Description - Fetching Values via Model `UserDetails` you can use it based on your uses.
 - Output - `UserDetails` model
 */
static func getNameAndAddress()-> UserDetails {
    return UserDetails((userDefault.value(forKey: userSessionKey) as? [String: String]) ?? [:])
}

/**
    - Description - Clearing user details for the user key `com.save.usersession`
 */
static func clearUserData(){
    userDefault.removeObject(forKey: userSessionKey)
}

}

person savan patel    schedule 03.12.2019