Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.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
Iphone NSUserDefaults是否删除暂时不需要的密钥?_Iphone_Objective C_Ios_Xcode_Nsuserdefaults - Fatal编程技术网

Iphone NSUserDefaults是否删除暂时不需要的密钥?

Iphone NSUserDefaults是否删除暂时不需要的密钥?,iphone,objective-c,ios,xcode,nsuserdefaults,Iphone,Objective C,Ios,Xcode,Nsuserdefaults,我将所有数据存储在NSUserDefaults中。 现在,我尝试在数组中存储一些具有特定前缀的键。因此,我首先将UserDefaults加载到字典中 NSString *myPrefix = @"prefix"; NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSDictionary *dict = [defaults dictionaryRepresentation]; for (NSString *keyW

我将所有数据存储在NSUserDefaults中。 现在,我尝试在数组中存储一些具有特定前缀的键。因此,我首先将UserDefaults加载到字典中

NSString *myPrefix = @"prefix";
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSDictionary *dict = [defaults dictionaryRepresentation];
for (NSString *keyWithPrefix in dict.keyEnumerator) {
    if ([keyWithPrefix hasPrefix: myPrefix]) {
        [relevantKeys addObject: keyWithPrefix];
    }
}
问题是:当我打印“dict”(表示用户默认值)时。有几把钥匙丢了。
NSUserDefaults是否删除暂时不需要的密钥

否,但您在更新它们时是否调用了
[NSUserdefaults synchronize]

否,但在更新它们时是否调用了
[NSUserdefaults synchronize]

否,也就是说,NSUserdefaults是一个持久性存储, 请阅读下面的答案,它有一个很好的解释

不,NSUserDefault是一个持久性存储, 请阅读下面的答案,它有一个很好的解释

在存储所需内容时,您可能应该使用
-synchronize
方法。i、 e:

[[NSUserDefaults standardUserDefaults] setValue:someDictionary forKey:@"someKey"];
[[NSUSerDefaults standardUserDefaults] synchronize];

在存储所需内容时,您可能应该使用
-synchronize
方法。i、 e:

[[NSUserDefaults standardUserDefaults] setValue:someDictionary forKey:@"someKey"];
[[NSUSerDefaults standardUserDefaults] synchronize];

好的,谢谢,我错了。。我正在搜索的密钥从未写入UserDefaults:)好的,谢谢,我错了。。我正在搜索的密钥从未写入UserDefaults:)否,除非您与读取相同首选项的不同进程进行协调(这是不寻常的),否则您不需要调用
-synchronize
。否,除非您与读取相同首选项的不同进程进行协调(这是不寻常的),否则您不需要调用
-synchronize