[解決済み] NSUserDefaultsにNSDateを格納する最適な方法は何ですか?
2022-04-21 21:07:59
質問
NSUserDefaultsにNSDateを格納する方法は2つあるようですが、どのようにすればよいのでしょうか?
オプション 1 - setObject:forKey:
// Set
NSDate *myDate = [NSDate date];
[[NSUserDefaults standardUserDefaults] setObject:myDate forKey:@"myDateKey"];
// Get
NSDate *myDate = (NSDate *)[[NSUserDefaults standardUserDefaults] objectForKey:@"myDateKey"];
オプション2 - timeIntervalSince1970
// Set
NSDate *myDate = [NSDate date];
NSTimeInterval myDateTimeInterval = [myDate timeIntervalSince1970];
[[NSUserDefaults standardUserDefaults] setFloat:myDateTimeInterval forKey:@"myDateKey"];
// Get
NSTimeInterval myDateTimeInterval = [[NSUserDefaults standardUserDefaults] floatForKey:@"myDateKey"];
NSDate *myDate = [NSDate dateWithTimeIntervalSince1970:myDateTimeInterval];
長所と短所
オプション1
これは、コンパクトで論理的だと思います。しかし、次のような理由でうまくいかないことが心配です。 日付フォーマッタのバグ .
オプション2
これは不器用な感じがします。あるテストでは、Apple DocsにNSTimeIntervalは秒以下の精度であると書かれているにもかかわらず、日付を取得したところ48秒違っていました。
必要条件
どんな方法を選んでも、そうでなければならない。
-
1秒以内の正確さ。
-
読みやすく、信頼できる。
私の質問
選択肢2の精度が悪いのは、私のやり方が悪いからでしょうか?
この2つのオプションのうち、あなたならどちらを使いますか?
私が知らない別の選択肢があるのでしょうか?
ありがとうございます。
解決方法は?
不必要に物事を複雑にしていますね。なぜ、日付を時間間隔に変換しているのですか(その後、時間間隔を別のプリミティブに変換しています)?ただ
[sharedDefaults setObject:theDate forKey:@"theDateKey"]
で終わりです。NSDateはPLISTフォーマットでサポートされている"main types"(日付、数値、文字列、データ、辞書、配列)の一つなので、直接保存すればいいのです。
参照 ドキュメント を使用することで証明できます。
日付を直接保存して取得するだけで、正しい動作をします(タイムゾーン、精度などを含む)。他の人が言っているように、フォーマッタは関係ありません。
関連
-
[解決済み] Cocoa:フレームとバウンドはどう違うの?
-
[解決済み] Ruby on Railsで、DateTime、Timestamp、Time、Dateの違いは何ですか?
-
[解決済み】ISO 8601とRFC 3339の日付書式の違いは何ですか?
-
[解決済み】NSUserDefaultsに文字列を保存しますか?
-
[解決済み】保存されたNSUserDefaultsを見る簡単な方法?
-
[解決済み】UIImage (Cocoa Touch) または CGImage (Core Graphics) からピクセルデータを取得する方法は?)
-
[解決済み】InstantとLocalDateTimeの違いは何ですか?
-
[解決済み] NSMutableArrayをシャッフルする最も良い方法は何ですか?
-
[解決済み] NSUserDefaultsにNSDateを格納する最適な方法は何ですか?
-
[解決済み] NSTextFieldにテキストを設定する方法を教えてください。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Swift のプロトコル: メソッドがスーパークラスのメソッドをオーバーライドしない。
-
[解決済み] Cocoa Autolayout: コンテンツの抱擁 vs コンテンツの圧縮抵抗の優先順位
-
[解決済み] NSOrderedSetが生成するアクセサで例外が発生する。
-
[解決済み】Core Data vs SQLite 3 [終了しました。]
-
[解決済み】ユニットテスト内のコードでバンドルリソースを見つけられないのはなぜですか?
-
[解決済み】実行時に「Interface Builderファイル内の不明なクラス<MyClass>」というエラーが発生する。
-
[解決済み] NSUserDefaultsにNSDateを格納する最適な方法は何ですか?
-
[解決済み] CFStringRefをNSStringに変換する方法は?
-
[解決済み] NSTextFieldにテキストを設定する方法を教えてください。
-
[解決済み] NSDateを年、月、日、時、分、秒の各スタイルにフォーマットする。