在我的iPhone应用程序中,我使用removeObjectForKey:@"bla"
中的setObject:nil forKey:@"bla"
或[NSUserDefaults standardUserDefaults]
删除密钥。
然而,当我在将新视图控制器推入导航控制器堆栈之前执行此操作时,默认设置不会更新。
如果我在显示的推送控制器中的viewDidAppear
中执行此操作,则synchronize
调用会执行预期的操作。
我不明白这种行为。有没有人有类似的问题?
摘要:在推送新VC之前删除+同步:NSUserDefaults保持不变。删除+ viewDidAppear
中的同步,它可以正常工作。
我也尝试使用setPersistentDomain:forName:
,但结果是一样的..
编辑:这是代码:
+ (void)deleteDefaultEntries
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults removeObjectForKey:@"key1"];
[defaults removeObjectForKey:@"key2"];
[defaults removeObjectForKey:@"key3"];
[defaults removeObjectForKey:@"key4"];
[defaults synchronize];
}
答案 0 :(得分:0)
您的代码看起来正确,我确定这不是iOS错误,但请尝试以下方法:
[[NSUserDefaults standardUserDefaults] setObject:nil forKey:@"example key"]
另请查看this question。