当我调用此功能时,我的应用程序会崩溃
我收到了这个错误:[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[1].
如果你知道的话我该怎么解决呢。
NSUserDefaults *defs = [NSUserDefaults standardUserDefaults];
NSDictionary *dict = [defs dictionaryRepresentation];
for (id key in dict)
{
NSObject * object = [dict objectForKey:key];
if(object != nil)
{
[defs removeObjectForKey:key];
[defs synchronize];
}
}
答案 0 :(得分:2)
请使用以下代码。它应该会帮助你
NSDictionary *defaultsDictionary = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation];
for (NSString *key in [defaultsDictionary allKeys]) {
[[NSUserDefaults standardUserDefaults] removeObjectForKey:key];
}
[[NSUserDefaults standardUserDefaults] synchronize]; //outside loop.
您也可以使用
Info.plist
注意:您提到的崩溃是关于字典中的setValue ForKey。请使用用户断点并查看在Dictionary中插入nil值的位置。
答案 1 :(得分:0)
尝试将所需条目的键添加到循环内的NSArray中 然后在循环外部执行removeObjectsForKeys:array
最好不要在for循环中枚举时删除条目
答案 2 :(得分:0)
我的问题解答是
NSUserDefaults *defs = [NSUserDefaults standardUserDefaults];
NSDictionary *dict = [userDefaults dictionaryRepresentation];
for (id key in dict) {
[dict removeObjectForKey:key];
}
[defs synchronize];