web-dev-qa-db-ja.com

iPhoneでコアデータまたはSQLiteを使用しますか?

CoreDataはOS 3.0のiPhoneで利用可能になったので、データの永続性に対する答えであり、直接のSQLiteのすべての必要性を置き換えることを意図していますか?

SQLiteを使用する理由は何ですか? SQLiteCoreDataの利点/欠点は何ですか?

55
Hauke

これはよくある質問です。

要約すると、特に複雑なオブジェクトモデルの場合、Core Dataはコードを大幅に簡素化できます。元に戻す/やり直しのサポートはほぼ無料で入手できます。また、特にiPhoneでは、非常に重要な パフォーマンス上の利点 を提供します。直感に反するように思えますが、フレームワークのオーバーヘッドを考えると、ほとんどの場合、Core Dataを使用して手動で調整したSQLiteのパフォーマンスを上回ることができます。 iPhoneでは、フェッチをバッチ処理してメモリ使用量を最小限に抑えることができます。

指摘されているように、1つの欠点は、エンドユーザーにiPhone OS 3.0を要求することによって制限されることです。ただし、これは私のユーザーにとってはまったく問題ではなく、今後の問題ではなくなります。

61
Brad Larson

これはあまり利点ではないかもしれませんが、コアデータはCocoaの一部であり、SQLiteは純粋なCであるため、SQLiteはプラットフォーム間ではるかに移植性があります。これは、たとえば、アプリケーションをPC純粋なSQLiteを使用する場合に書き換えるコードが少なくなります。

次に、ローカルDBを使用してクロスプラットフォームで他の何かを開発したい場合(必ずしもiPhoneアプリに関連しているとは限りません)、SQLiteの経験があります。

11
Mark Rushakoff

OS 3.0を実行していないiPhoneでアプリケーションを実行する場合は、SQLiteを使用する必要があります。

ただし、CoreData(これはバックエンドとしてSQLiteを使用していると思います)を使用すると、特にリレーションなどを行う際に、面倒な独自のデータベース相互作用コードを記述する必要がなくなります。

自分でCoreDataを使用しています...

2
Pieter Jongsma