私が過去1週間にアプリを使用したかどうかに基づいてアプリケーションに条件を追加したいと思います。それをする最善の方法は何ですか?私はどこかでNSUseDefaultsを使うべきだと読んでいますが、どうしたらいいか分かりません。アプリが最後に使用された時期を知っている、iPhoneアプリ
ありがとうございました。
私が過去1週間にアプリを使用したかどうかに基づいてアプリケーションに条件を追加したいと思います。それをする最善の方法は何ですか?私はどこかでNSUseDefaultsを使うべきだと読んでいますが、どうしたらいいか分かりません。アプリが最後に使用された時期を知っている、iPhoneアプリ
ありがとうございました。
読む:
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の自己のプロパティを前提としています。
葉、ちょうどそうよう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"];
したがって、lastStartDateは "date"を保存していますが、timeIntervalSinceNowとともに使用すると秒に変換されますか? – moshikafya
はい、秒を返します。しかし、私は、間隔が負の値ではなく正の秒を返すように、順序を切り替える方が直感的です。 [[NSDate date] timeIntervalSinceDate:lastStartDate]; – Joel
あなたはapplicationWillTerminate
に値を設定することができますように:その後、日付を比較
NSDate *date=(NSDate*)[[NSUserDefaults standardUserDefaults]objectForKey:@lastUsed"];
:
NSUserDefaults *ud=[NSUserDefaults standardUserDefaults];
[ud setObject:[NSDate date] forKey:@"lastUsed"];
は値をRetrive。
applicationWillTerminateはすべての場合に呼び出されるとは限りません。 –
[この質問](http://stackoverflow.com/questions/7553648/nsuserdefaults-storing-and-retrieving-data)が役立つ可能性があります。 –
mmm ...それほど多くはありません...単にNSUserDefaultsの基本的な使い方を示しています。しかし、ありがとう。 – moshikafya
フロートを保存する方法を示している[そしてこの1つ](http://stackoverflow.com/questions/9957055/how-to-store-an-retrieve-float-from-nsuserdefaults)同じ方法で日付の値を保存したり復元したりすることができます。また、実際にコードを書く人を探していますか? –