2009-05-22 7 views
1

iPhoneアプリのC++構造でdatetimeを保持する必要があります。時刻は保存され、sqlite dbに復元されます。このための最良のデータ型とそれに対応するAPIは何ですか? 私の候補者は、次のとおりです。C++のstructメンバー、iPhoneでカレンダーの時間を保持するタイプは?

  1. time_t<ctime>から構造体tm

私の本能が良いオーレ」Cで行くことにあるのQuickTime APIから<NSDate.h>

  • TimeValueから<time.h>
  • NSTimeInterval/C++のタイプは<time.h>です。道には何か欠点がありますか?それ以外の時間のタイプは、iPhone SDKの愛です。

  • 答えて

    3

    NSTimeIntervalおよびそのCoreFoundationの対応部分CFAbsoluteTimeは、サブミリ秒精度(倍精度浮動小数点値)を含むため、使用するのに最適な値です。 time_tstruct tmは実際には特定のBSD APIでのみ使用されています(さらにstruct timevalまたはstruct timespecが一般的です)。 TimeValueは、メディアファイル内の値と間隔を表すためにのみ使用され、通常は設定可能なタイムベースに基づいています。

    1

    時間は、あなたが何時使用しているかによってまったく異なります。

    • どの精度が必要ですか?
    • 何個が保存されますか? (平均/最悪の場合)

    必要以上に正確な値を格納します。 (しかし、将来のニーズについても考えてください)。あなたは、最も近いナノ秒に予定時間を保存しません - それは理にかなっていません。しかし、非常に小さな間隔が重要なデータを記録している場合は、システムクロックの精度(100ナノ秒のチャンク)に保存することもできますし、より良いクロックで将来のバージョンを使用できるようにするにはさらに細かくすることもできます。

    小さい数字しか保存していない場合(例:数千未満)、ストレージサイズとアクセス速度はおそらく重要ではありません。多くのレコードを格納する場合は、レコードのサイズが重要になる場合があります。

    上記の考慮事項とは別に、実際には関係ありません。それが明確に文書化されている限り。

    私はsqlite dbに精通していません。ネイティブの日付/時刻型はありますか?もしそうなら、それはあなたの要求を満たす限り、おそらく最も簡単です。

    関連する問題