2012-05-09 10 views
1

私が過去1週間にアプリを使用したかどうかに基づいてアプリケーションに条件を追加したいと思います。それをする最善の方法は何ですか?私はどこかでNSUseDefaultsを使うべきだと読んでいますが、どうしたらいいか分かりません。アプリが最後に使用された時期を知っている、iPhoneアプリ

ありがとうございました。

+0

[この質問](http://stackoverflow.com/questions/7553648/nsuserdefaults-storing-and-retrieving-data)が役立つ可能性があります。 –

+0

mmm ...それほど多くはありません...単にNSUserDefaultsの基本的な使い方を示しています。しかし、ありがとう。 – moshikafya

+0

フロートを保存する方法を示している[そしてこの1つ](http://stackoverflow.com/questions/9957055/how-to-store-an-retrieve-float-from-nsuserdefaults)同じ方法で日付の値を保存したり復元したりすることができます。また、実際にコードを書く人を探していますか? –

答えて

5

読む:

self.lastRun = [NSDate distantPast]; 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
if ([defaults objectForKey:@"MyAppLastRun"]) { 
    self.lastRun = [defaults objectForKey:@"MyAppLastRun"]; 
}  

書き込み:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setObject:self.lastRun forKey:@"MyAppLastRun"]; 
[defaults synchronize]; 

比較:

if ([[NSDate date] timeIntervalSinceDate:self.lastRun] > X) { 
} 

注:NSDate * lastRunの自己のプロパティを前提としています。

2

葉、ちょうどそうようNSUserDefaultsで何かを固執:

// When app comes to foreground: 

NSDate *lastStartDate = [[NSUserDefaults standardUserDefaults] objectForKey:@"lastStartDate"]; 

if (!lastStartDate) { 
    // Never launched 
} else if ([lastStartDate timeIntervalSinceNow] < -(60. * 60. * 24. * 7.)) { 
    // Do whatever you want if they've not used in past week 
} 

[[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:@"lastStartDate"]; 
+0

したがって、lastStartDateは "date"を保存していますが、timeIntervalSinceNowとともに使用すると秒に変換されますか? – moshikafya

+0

はい、秒を返します。しかし、私は、間隔が負の値ではなく正の秒を返すように、順序を切り替える方が直感的です。 [[NSDate date] timeIntervalSinceDate:lastStartDate]; – Joel

2

あなたはapplicationWillTerminateに値を設定することができますように:その後、日付を比較

NSDate *date=(NSDate*)[[NSUserDefaults standardUserDefaults]objectForKey:@lastUsed"]; 

NSUserDefaults *ud=[NSUserDefaults standardUserDefaults]; 
[ud setObject:[NSDate date] forKey:@"lastUsed"]; 

は値をRetrive。

+0

applicationWillTerminateはすべての場合に呼び出されるとは限りません。 –

関連する問題