Save and Add integer value in UserDefaults and retrieve after adding the value

3.9k views Asked by At

I can save and retrieve deleted mails number (such as like Integer value) in UserDefaults. Suppose if I deleted some more mails then I have to add/increase that saved UserDefaults value and if I retrieve it should come total deleted mails number. ->> Here numEmails is deleted mails number(Integer).

UserDefaults.standard.set(numEmails, forKey: "NumberofMailsDeleted") //Saving
var numMailsDeleted = UserDefaults.standard.integer(forKey: "NumberofMailsDeleted") //Retriving
print("I've deleted \(numMailsDeleted) mails") //Printing` 

I will explain this scenario with other example ->> I want to save vehicles incoming (number of vehicles inside) into the parking area (i.e. the UserDefaults saved value is changing according to the cars incoming). If I retrieve it should come updated value of incoming don't think about outgoing, I don't need outgoing

2

There are 2 answers

2
Indra Mohan On

You can use the set(Int, forKey: String) method of UserDefaults:

//Get
let deletedMailsCount = UserDefaults.standard.integer(forKey: "NumberofMailsDeleted")
//Update deletedMails count
deletedMailsCount += 1;
//Set
UserDefaults.standard.set(deletedMailsCount, forKey: "NumberofMailsDeleted")
UserDefaults.standard.synchronize()
0
Vimal On
var deletedEmail: Int { get { return UserDefaults.standard.integer(forKey: "emailsDeleted") } set { UserDefaults.standard.set( newValue forKey:"emailsDeleted")} }

Using computed property you can simplify it to something like this. newValue is a keyword you can use inside set property. Do not declare newValue !!. Just try the code and let me know.