微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

只检索存储在UserDefaults中的键和值

如何解决只检索存储在UserDefaults中的键和值

我已经用套件创建了UserDefaults,

self.moviesWatchedUserDefaults = UserDefaults(suiteName: "com.apple.tv.2020")

并将信息存储在plist中,例如

self.moviesWatchedUserDefaults.set(data,forKey: key).

现在,在检索时,我想检索所有键和值。我正在使用的

var watchedList = self.moviesWatchedUserDefaults?.dictionaryRepresentation()

但是返回的列表不仅包含我存储的项目,还包含其他键,例如NSLanguagesAppleKeyboardsAppleKeyboardsExpandedCarCapabilities等,

如何检索所有键和值(仅检索存储的键和值)?

解决方法

如果您有完整的已知键列表,则可以过滤字典。

在下面的示例中,我将所有已知的键都包含在枚举中,并且可以过滤字典,仅保留我的键:

enum UserDefaultsKey: String,CaseIterable {
    case foo
    case bar
    case baz
}

let userDefaults = UserDefaults.standard
userDefaults.set(42,forKey: UserDefaultsKey.foo.rawValue)

let onlyMyValues = userDefaults.dictionaryRepresentation().filter { (key,_) -> Bool in
    UserDefaultsKey.allCases.map { $0.rawValue }.contains(key)
}

print(onlyMyValues) // prints ["foo": 42]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。