2012-03-13 3 views
2

NSUserDefaults 개체를 만들었습니다. 짝수가 발생할 때마다 새 값으로 업데이트됩니다. 내가 원한 것은 (애플리케이션 요구 사항에 따라) 객체를 7 일마다 지워야한다는 것입니다. NSUserDefaults가 오늘 정확히 7 일 후에 업데이트되면 NSUserDefaults가 작동하고 메서드가 작동해야합니다. 그러면 앞으로 7 일 동안 새로운 값이 할당됩니다.지정한 기간 후에 NSUserDefaults 지우기 iPhone

객관적으로 가능합니까?

답변

2

사용하는 무기 호

같은 객체를 설정합니다. 그런 다음 응용 프로그램이 시작될 때마다 (또는 더 자주) 현재와 현재 시간의 차이가 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 그 키와 값이 당신이 원하는 도메인. 이 값은 응용 프로그램의 번들 식별자와 같아야합니다.

4

예. 객체로 NSDate (현재 날짜)을 NSUserdefaults에 저장합니다. 앱마다 출시에서

.. 기본값에서 날짜를 취득하고 현재 날짜와 비교 .. 간격이 7 일 이상이면

(당신은 결과를 얻기 위해 수학 계산을해야 할 것)

은 당신이 할 수있는 것은있는 NSDate 객체를 저장할 수있다

[defaults setNilforKey: ];