Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/122.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 仅检索钥匙&;我存储在UserDefaults中的值_Ios_Swift_Nsuserdefaults_Userdefaults - Fatal编程技术网

Ios 仅检索钥匙&;我存储在UserDefaults中的值

Ios 仅检索钥匙&;我存储在UserDefaults中的值,ios,swift,nsuserdefaults,userdefaults,Ios,Swift,Nsuserdefaults,Userdefaults,我已经用suite创建了UserDefaults self.moviesWatchedUserDefaults = UserDefaults(suiteName: "com.apple.tv.2020") 并将信息存储在plist中 self.moviesWatchedUserDefaults.set(data, forKey: key). 现在,在检索时,我想检索所有键和值。我正在使用的 var watchedList = self.moviesWatchedUserD

我已经用suite创建了UserDefaults

self.moviesWatchedUserDefaults = UserDefaults(suiteName: "com.apple.tv.2020")
并将信息存储在plist中

self.moviesWatchedUserDefaults.set(data, forKey: key).
现在,在检索时,我想检索所有键和值。我正在使用的

var watchedList = self.moviesWatchedUserDefaults?.dictionaryRepresentation()
但是返回的列表不仅包含我存储的项目,还包含其他键,如
NSLanguages
AppleKeyboards
AppleKeyboardsExpanded
CarCapabilities
,等等


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

如果您有一个已知键的完整列表,您可以筛选字典

在下面的示例中,我在一个枚举中有我所有的已知键,我可以过滤字典,只保留我的键:

enum UserDefaultsKey:String,caseetrable{
凯斯福
箱杆
案例baz
}
让userDefaults=userDefaults.standard
userDefaults.set(42,forKey:UserDefaultsKey.foo.rawValue)
让onlyMyValues=userDefaults.dictionaryRepresentation().filter{(key,x)->Bool-in
UserDefaultsKey.allCases.map{$0.rawValue}.contains(键)
}
print(onlymyvalue)//prints[“foo”:42]

No,这些类似于从后端接收的未知密钥。在这种情况下,我建议两个选项:1。跟踪用于保存到UserDefaults中的密钥,并将其存储以供以后检索。2.采用更合适的存储,如自定义plist文件或数据库。CoreData可能是一个不错的选择。