首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在UserDefault中删除套件

在UserDefault中删除套件
EN

Stack Overflow用户
提问于 2019-06-10 17:38:29
回答 2查看 919关注 0票数 2
代码语言:javascript
复制
var sharedPreference    : UserDefaults  = UserDefaults.init(suiteName: "userKeyValue")!

我正在创建这样的UserDefault实例,很可能是在设备中创建一个名称为userKeyValue的空间,并在其中保留所有键值对。

现在,我想将内容迁移到不同的UserDefault实例

代码语言:javascript
复制
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。我不知道我做的方式是否正确。

我只希望一旦这段代码运行,userKeyValueUserDefaults实例就不再存在,但这并没有发生。

UPDATE::在创建实例时,我在UserDefault中获取此内容

代码语言:javascript
复制
["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]
EN

回答 2

Stack Overflow用户

发布于 2019-06-10 17:53:30

你有没有尝试删除整个域名?

代码语言:javascript
复制
UserDefaults.standard.removePersistentDomain(forName: "userKeyValue")
UserDefaults.standard.synchronize()

来自苹果documentation

调用此方法等效于使用init(suiteName:)初始化用户默认对象,传递domainName,然后对其每个键调用removeObject(forKey:)方法。

票数 -1
EN

Stack Overflow用户

发布于 2019-06-10 17:51:04

尝试下面提到的删除UserDefaults实例的代码

代码语言:javascript
复制
UserDefaults.standard.removeObject(forKey: "userKeyValue")
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56523845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档