在指定的时间段iPhone后清除NSUserDefaults

时间:2012-03-13 13:27:49

标签: iphone objective-c xcode cocoa-touch xcode4.2

我创建了NSUserDefaults对象,只要偶数发生,它就会使用新值进行更新。 我想要的是(根据我的申请要求)该对象应该每7天清除一次。 就像第一次NSUserDefaults今天如此精确地在7天后更新一样,一个方法应该工作并清除NSUserDefaults。 因此,在接下来的7天内,将为此分配新值。

是否有可能在objective-c?

2 个答案:

答案 0 :(得分:4)

是..将NSDate(当前日期)存储为NSUserdefaults中的对象。

每次发布​​您的应用时..从默认值中获取日期并将其与当前日期进行比较..

如果间隔超过7天(您必须进行数学计算才能得到结果)

然后将对象设置为nil

使用

[defaults setNilforKey: ];

答案 1 :(得分:2)

您可以做的是存储NSDate对象。然后每次启动应用程序(或更频繁)时,检查当时和现在之间的时差是否为7天。

const NSString *kFirstLaunchDateKey = @"firstLaunchDate";
NSDate *firstLaunchDate = [[NSUserDefaults standardUserDefaults] objectForKey:kFirstLaunchDateKey];

//  If this is the first time the app has been launched we record right now as the first time the app was launched.
if (!firstLaunchDate) {
    [[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:kFirstLaunchDateKey];
    return;
}

NSTimeInterval *diff = abs([firstLaunchDate timeIntervalSinceNow]);
if (diff > 60 * 60 * 24 * 7) {
//      Seven days have passed since the app was first launched. 
//      Display the rate button.
}

如果是通话

- (void)removePersistentDomainForName:(NSString *)domainName

将应用程序的包标识符作为参数。

From Apple’s documentation:

  

domainName   您想要的键和值的域。该值应该等于应用程序的包标识符。