Удаление Suite в UserDefault - PullRequest
       19

Удаление Suite в UserDefault

0 голосов
/ 10 июня 2019
var sharedPreference    : UserDefaults  = UserDefaults.init(suiteName: "userKeyValue")!

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

Теперь я хочу перенести контент в другой UserDefault экземпляр

var oldSharedPreference : UserDefaults? = UserDefaults(suiteName: "userKeyValue")
if (oldSharedPreference != nil) {
  print("Previous data found")
  for (key, value) in oldSharedPreference!.dictionaryRepresentation() {
    sharedPreference.set(value, forKey: key)
  }
  sharedPreference.synchronize()
  oldSharedPreference!.removeSuite(named: "userKeyValue")
  oldSharedPreference!.synchronize()
} 

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

Я просто хочу, чтобы существование UserDefaults экземпляра userKeyValue больше не существовало после запуска этого фрагмента кода, но этого не происходит.

ОБНОВЛЕНИЕ :: Я получаю это содержимое в UserDefault при создании его экземпляра

["AKLastCheckInSuccessDate": 2019-06-03 09:06:11 +0000, "NSLanguages": <__NSArrayI 0x2820289c0>(
en-IN,
en
)
, "com.apple.content-rating.TVShowRating": 1000, "com.apple.content-rating.ExplicitBooksAllowed": 1, "AppleLanguagesDidMigrate": 16E227, "INNextHearbeatDate": 581574895.850746, "AppleLocale": en_IN, "NSInterfaceStyle": macintosh, "AKLastCheckInAttemptDate": 2019-06-09 20:42:49 +0000, "AddingEmojiKeybordHandled": 1, "com.apple.content-rating.MovieRating": 1000, "AKLastIDMSEnvironment": 0, "AKLastEmailListRequestDateKey": 2019-06-03 09:04:39 +0000, "AppleLanguages": <__NSCFArray 0x283579f80>(
en-IN
)
, "com.apple.content-rating.AppRating": 1000, "com.apple.content-rating.ExplicitMusicPodcastsAllowed": 0, "PKKeychainVersionKey": 4, "AppleKeyboards": <__NSCFArray 0x28357a080>(
en_IN,
emoji
)
, "AppleITunesStoreItemKinds": <__NSCFArray 0x281531080>(
itunes-u,
movie,
ringtone,
album,
software-update,
booklet,
tone,
music-video,
song,
podcast,
software,
podcast-episode,
wemix,
eBook,

artist,
mix,
document
)
, "INNextFreshmintRefreshDateKey": 581904664.355094, "ApplePasscodeKeyboards": <__NSCFArray 0x28357a0c0>(
en_IN@sw=QWERTY;hw=Automatic,
emoji@sw=Emoji
)
, "AppleKeyboardsExpanded": 1]

Ответы [ 2 ]

0 голосов
/ 10 июня 2019

Вы пытались удалить весь домен?

UserDefaults.standard.removePersistentDomain(forName: "userKeyValue")
UserDefaults.standard.synchronize()

Из Apple Документация

Вызов этого метода эквивалентен инициализации объекта по умолчанию пользователяс init (suiteName :), передавая domainName и вызывая метод removeObject (forKey :) для каждого из его ключей.

0 голосов
/ 10 июня 2019

попробуйте приведенный ниже код для удаления экземпляра UserDefaults

UserDefaults.standard.removeObject(forKey: "userKeyValue")
...