How to delete NSCoder Property list stored in phone memory iOS

183 Views Asked by At

How to delete an encoded property list stored in a file path. I have stored user information as an encoded property list in a file path.

let loggedDetailsFilePath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.appendingPathComponent(SessionKeys.loggedDetails)

func saveLoggedDetails(data: LoginModel) {

    do{
        let data = try encoder.encode(data)
        try data.write(to: loggedDetailsFilePath!)
    }catch{
        print("error encoding the item \(error)")
    }
}

LoginModel is my Codable model

When the user is logging out from the app the property list need to be cleared or deleted

1

There are 1 best solutions below

2
Sagar Vaishnav On

I hope this will work for you to store data in UserDefaults

    extension UserDefaults {

    func save<T: Codable>(_ object: T, forKey key: String) {
        let encoder = JSONEncoder()
        if let encodedObject = try? encoder.encode(object) {
            UserDefaults.standard.set(encodedObject, forKey: key)
            UserDefaults.standard.synchronize()
        }
    }

    func getObject<T: Codable>(forKey key: String) -> T? {
        if let object = UserDefaults.standard.object(forKey: key) as? Data {
            let decoder = JSONDecoder()
            if let decodedObject = try? decoder.decode(T.self, from: object) {
                return decodedObject
            }
        }
        return nil
    }
}

Above extension is for store & fetch Codable model to UserDefaults

Here is function to store any Codable Model :-

func setCoableInUser<T: Codable>(_ object:T, key: String)-> Void{
    UserDefaults.standard.save(object, forKey: key)
}

as per above function you can easily remove data from UserDefaults

func removeObjectFromDefault(_ key: String)
{
    UserDefaults.standard.removeObject(forKey: key)
}