UserDefaults removeObjectForKey не работает? - PullRequest
0 голосов
/ 19 мая 2018

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

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

Вот мой код в swift 3.2 для установки значения по умолчанию

let sharedUserDefaultsWithExtension = UserDefaults(suiteName: "GROUP_IDENTIFIER")
sharedUserDefaultsWithExtension?.setValue(newValue, forKey: "My_Key")
sharedUserDefaultsWithExtension?.synchronize()

Код для удаления всех значений пользователя по умолчанию

let sharedUserDefaultsWithExtension = UserDefaults(suiteName: "GROUP_IDENTIFIER")
for key in (sharedUserDefaultsWithExtension?.dictionaryRepresentation().keys)! {
    sharedUserDefaultsWithExtension?.removeObject(forKey: key)
}
sharedUserDefaultsWithExtension?.synchronize()

Есть идеи?

1 Ответ

0 голосов
/ 19 мая 2018

Если вы хотите удалить все данные из userdefault, используйте:

let bundleIdentifier = Bundle.main.bundleIdentifier!
UserDefaults.standard.removePersistentDomain(forName: bundleIdentifier)

И для set данные по умолчанию для пользователя:

UserDefaults.standard.setValue("jogendar", forKey: "My_Key")

Ипо-вашему, вам нужно синхронизировать данные сразу после удаления, но не пытайтесь synchronize(), как указано в документе https://developer.apple.com/documentation/foundation/userdefaults/1414005-synchronize

synchronize(): - ожидает любых ожидающих асинхронных обновленийбаза данных по умолчанию и возвраты;этот метод не нужен и не должен использоваться.

let sharedUserDefaultsWithExtension = UserDefaults(suiteName: "GROUP_IDENTIFIER")
for key in (sharedUserDefaultsWithExtension?.dictionaryRepresentation().keys)! {
    sharedUserDefaultsWithExtension?.removeObject(forKey: key)
    sharedUserDefaultsWithExtension?.synchronize()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...