2012-06-05 28 views
1

我将所有数据存储在NSUserDefaults中。 现在我试图在数组中存储一些带有特定前缀的键。因此,我首先在一个字典中加载UserDefaults。NSUserDefaults是否删除临时不需要的密钥?

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”(代表UserDefaults)时。有一些钥匙丢失。 NSUserDefaults是否删除临时不需要的密钥?

回答

0

不,但是当你更新它们时,你打电话给[NSUserdefaults synchronize]吗?

+0

好的,谢谢,我的错误..钥匙,我正在寻找,从未写入UserDefaults。 :) – smudo78

0

存储你想要的东西时,你或许应该使用-synchronize方法。我,电子:

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

不,除非您正在协调读取相同首选项的不同进程(这是不寻常的),您不应该调用'-synchronize'。 –