Swift3 - How can I find all the keys in Foundation.UserDefaults so that I can delete all my data

I have dynamic key generation to create my database, so I need to find all the keys created by the user if I want to do a complete deletion.

func deleteAllData(){
    let userDefaults = Foundation.UserDefaults.standard
    let keys = userDefaults.dictionaryRepresentation()
    for key in keys {
        print(key)
        userDefaults.removeObject(forKey: String(describing: key))
    }
}

So I'm not in the right dictionary, because the keys that I grab here contain system information such as AppleLocale, PKKeychainVersionKey and AppleKeyboards.

I noticed some features in UserDefaults, such as removeSuite, removeVolatileDomain and removePersistentDomain. Is there a better way to structure my data so that I can use these methods or can I use them if I knew what to pass as an argument.

// How I've been setting my data
userDefaults.set(taskTime, forKey: "\(taskName)_taskTime")
userDefaults.set(lastRefresh, forKey: "\(taskName)_lastRefresh")


//Swift2.x delete-all method
for key in Array(NSUserDefaults.standardUserDefaults().dictionaryRepresentation().keys) {
NSUserDefaults.standardUserDefaults().removeObjectForKey(key)
}
+4
source share
1

, . , dictionaryRepresentation() . , , .

, , - , .

for key in Array(UserDefaults.standard.dictionaryRepresentation().keys) {

    if key.element.contains("_") {
        UserDefaults.standard.removeObject(forKey: key.element)
    }

}

, _ , , , taskTime lastRefresh.

0

Source: https://habr.com/ru/post/1665526/


All Articles