0

私はデータの永続化のために iOS アプリで sqlite データベースを使用してきましたが、コア データを学ぶ価値があるかどうかを判断しようとしています。その長所と短所に関するいくつかのドキュメントと投稿を読んでいますが、Core Data または Sqlite をいつ使用するかを決定するのがあまり明確ではないことがわかりました (たとえば、Core Data VS Sqlite または FMDB …? )。

Core Data を学習して使用する必要があるかどうか、または Sqlite を使用するだけで十分かどうかを知るためのガイダンスが必要です。

  1. 既に sqlite スクリプトを持っていますが、sqlite データベースのデータから Core Data モデルを構築することは可能ですか? Afaik、(間違っていたら訂正してください) sqlite を使用して Core Data オブジェクトを永続化できますが、逆に操作することは可能ですか?
  2. 複数のユーザーのデータを処理するのに適切な Core Data はありますか? 異なるユーザーが同じデバイスでアプリにログインできることを考慮する必要があります。

前もって感謝します

4

2 に答える 2

1

アプリ開発、

Core Data を使用するか、SQLite を使用するかを判断できるのはあなただけです。上記の私の回答を参照したように、あなたは私の見解を知っています-コアデータを使用してください。あなたの文脈に入れさせてください。

大きな利点は、Core Data に付属する一連の抽象化と、Objective-C オブジェクト モデルへのマッピング方法です。これは、SQLite アプリケーションから手動で処理する必要があるものです。(できますか? はい。ただし、ほとんどの場合、SQL スキーマに合わせて調整されたカスタム インターフェイスを作成します。再利用性はほとんどありません。これは長期的な問題です。)

述語と SQL クエリの問題に関しては、これは世界観の違いです。とはいえ、述語は NSSet と NSArray の両方に適用できるため、Core Data が必要とする以上のユーティリティがあります。述語の使用方法を知っておくと役立ちます。たとえば、クエリを実行してレコードのコレクションを取得し、述語を使用してそれらをフィルター処理できます (テーブル ビューの検索など)。

特定のパターンを受け入れる準備ができたら、誰もが選択する必要があります。当然のことながら、SQL の専門家は、自分が知っていることに固執することを好みます。動的言語の愛好家は別の方法で選択します。iOS/OS X の場合、動的言語パスを採用することは、開発者としての価値をますます高めます。

したがって、私の推奨事項は変わらず、Core Data を使用することです。

アンドリュー

于 2013-05-16T16:25:04.220 に答える
1

Core Data は素晴らしいフレームワークですが、通常は舞台裏で SQLite を使用していますが、Core Data をデータベース エンジンとしてではなく、むしろオブジェクト永続化フレームワークと考えるべきです。多くの SQL コード (特に一括更新など) がある場合、Core Data に変換する価値はないかもしれません。しかし、Core Data には多くの素晴らしいパフォーマンスの最適化、iCloud 統合などがあるので、詳しく調べる価値があります。

Core Data の背景が必要な場合は、Apple ビデオWorking with Core Data をお勧めします。

SQLite コードを簡素化したいだけなら、FMDBを調べてください。


あなたの質問に答えて:

既に sqlite スクリプトを持っていますが、sqlite データベースのデータから Core Data モデルを構築することは可能ですか? Afaik、(間違っていたら訂正してください) sqlite を使用して Core Data オブジェクトを永続化できますが、逆に操作することは可能ですか?

通常、Core Data モデルを再定義する必要があります。既存の SQLite データベースを開くことはできません (ただし、モデルを定義したら、データを SQLite から Core Data に転送するコードを記述できます)。

複数のユーザーのデータを処理するのに適切な Core Data はありますか? 異なるユーザーが同じデバイスでアプリにログインできることを考慮する必要があります。

はい、できます。ただし、これを手動で処理するには、モデルを定義する必要があります (たとえば、SQLite で行う必要があるのと同じように、ユーザー識別子フィールドを追加し、それに応じて述語/フィルター結果を手動でコーディングします)。

于 2013-05-16T15:16:47.877 に答える