使用NSUserDefaults保存数据3天?

时间:2014-04-03 09:01:49

标签: objective-c nsuserdefaults

是否可以将NSUserDefaults数据保存3天,然后再使用下面的代码再回到它?不知道把时间触发器放在哪里:(

#define k_Save @"MAKENEW"

- (void)viewDidLoad
{
    NSUserDefaults *saveapp = [NSUserDefaults standardUserDefaults];
    bool saved = [saveapp boolForKey:k_Save];
    if (!saved) {

        _level2Button.hidden = YES;

        _purchaseController = [[PurchaseViewController alloc]init];

        [[SKPaymentQueue defaultQueue]
         addTransactionObserver:_purchaseController];

    } else {

        _level2Button.enabled = YES;
        _level2Button.hidden = NO;
    };
}

-(void)enableLevel2
{
    _level2Button.enabled = YES;
    _level2Button.hidden = NO;
    NSUserDefaults *saveapp = [NSUserDefaults standardUserDefaults];
    [saveapp setBool:TRUE forKey:k_Save];
    [saveapp synchronize];
}

感谢您的回答。

3 个答案:

答案 0 :(得分:0)

你需要对它进行编码,没有像这样的自动选项。

如果您每次拨打setBool:...forKey:...,也可以拨打setObject:[NSDate date] forKey:...,然后您可以稍后检查存储的日期,并使用removeObjectForKey:清除已保存的BOOL(和日期) )。

答案 1 :(得分:0)

你必须像这样手动管理它。

您可以在NSUserDefaults中存储日期,然后在应用程序进入前台时对其进行比较。如果大于3天,则删除对象对象。

答案 2 :(得分:0)

存储密钥时添加另一个标志,并检查是否也是。

-(void)enableLevel2
{
    _level2Button.enabled = YES;
    _level2Button.hidden = NO;
    NSUserDefaults *saveapp = [NSUserDefaults standardUserDefaults];
    [saveapp setBool:TRUE forKey:k_Save];
    [saveapp setObject:[NSDate date] forKey:k_EnabledLebel2Date];
    [saveapp synchronize];
}

执行以下检查:

- (void)viewDidLoad
{
    NSUserDefaults *saveapp = [NSUserDefaults standardUserDefaults];
    bool saved = [saveapp boolForKey:k_Save];
    NSDate *saveDate = [saveapp objectForKey:k_EnabledLebel2Date];
    if (saveDate && [[NSDate date] timeIntervalSinceDate:saveDate] > 3 * 24 * 60 *60)
    {
         [saveapp setBool:NO forKey:k_Save];
         [saveapp setObject:nil forKey:k_EnabledLebel2Date];
         saved = NO;
    }
    if (!saved) {

        _level2Button.hidden = YES;

        _purchaseController = [[PurchaseViewController alloc]init];

        [[SKPaymentQueue defaultQueue]
         addTransactionObserver:_purchaseController];

    } else {

        _level2Button.enabled = YES;
        _level2Button.hidden = NO;
    };
}