1

ドキュメント/ディスカッションで明示的な「いいえ」は見つかりませんでしたが、実行時にプログラムで CoreData オブジェクトを生成することはできないと思われます。

私がやりたいことは、実行中のコード内から DDL コマンド (「Create Table」、「Drop Table」など) を実行するのと似ています。ユーザーにテーブルに必要な列数を尋ねるまでわからないからです。必要なデータ型。たぶん、彼は複数のテーブルを必要としています。

これが可能かどうか知っている人はいますか?読むべき何かへのポインタをいただければ幸いです。(ネガティブなことも学んでいただければ幸いです。そうすれば、疑問に思うのをやめることができます。)

CoreData で実行できない場合、これは SQLite に切り替える理由になりますか?

4

1 に答える 1

4

コア データ モデル全体を実行時に作成できます。Xcode のデータ モデラーを使用する必要はまったくなく、モデルのすべての詳細を作成および構成するための API サポートがあります。しかし、それはおそらくあなたが望むほど柔軟ではありません。新しいエンティティの説明を作成したり、既存の説明を変更したりできますが、データ ストア ファイルをロードする前にのみ行うことができます。データの読み取りと書き込みを行ったら、データ モデルが固定されていると見なす必要があります。その時点で変更すると、例外が生成されます。

これは、典型的な SQLite の使用法とまったく同じではありません。SQLite テーブルが 1 つのファイルで定義され、データが別のファイルに格納されているようなものです。実際のデータをロードする前にのみ、その場でテーブルを変更できます。(これが SQLite の実際の動作ではないことはわかっていますが、基本的に Core Data が実施するアプローチです)。

説明したようにモデル/スキーマを変更する必要があると予想される場合は、SQLite に直接アクセスする方がよいでしょう。SQLite スタイルのアクセスをサポートしながら、ObjC スタイルのアプローチを可能にする Objective-C SQLite ラッパーがいくつかあります。

于 2013-02-24T22:34:21.440 に答える