是否可以将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];
}
感谢您的回答。
答案 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;
};
}