当app关闭或在后台时,iPhone将NSUserDefaults设置为nil

sta*_*rob 0 application-state ios

我想在应用程序关闭或在后台运行一段时间(比如说5分钟)时,消除保存到NSUserDefaults所有字段中的所有变量.

我试图在applicationDidFinishLaunching的app委托中添加一行,如下所示:

if (UIApplicationStateBackground == TRUE) {
    NSUserDefaults *profiles = [NSUserDefaults standardUserDefaults];

    [profiles setObject:nil forKey:@"name1"];
    [profiles synchronize];
}
Run Code Online (Sandbox Code Playgroud)

我还将这部分添加到applicationWillTerminate中:

NSUserDefaults *profiles = [NSUserDefaults standardUserDefaults];

    [profiles setObject:nil forKey:@"name1"];
    [profiles synchronize];
Run Code Online (Sandbox Code Playgroud)

这似乎都不起作用,我不知道如何设置'如果5分钟超过应用程序在后台,删除NSUserDefaults变量'的条件 - 任何帮助?

nac*_*o4d 8

我建议删除对象而不是将其设置为nil.

- (void)removeObjectForKey:(NSString *)defaultName;
Run Code Online (Sandbox Code Playgroud)

当没有与查询匹配的密钥时,NSUserDefaults的正常行为是返回nil,所以我认为最好遵循相同的规则而不是为某个密钥存储nil.

希望能帮助到你.