6

Core Data を使用して、プログラムで新しいテーブルを作成できますか? または、必要に応じて SQLite を直接使用する必要があります。

ありがとう

4

3 に答える 3

4

CoreData の観点から見ると、データベース テーブルは、コア データ モデルに関連付けられた永続ストアの可能なタイプの 1 つにすぎないため、新しいテーブルを実際に作成する必要はありません。

ただし、NSEntityDescription クラスを使用してプログラムで新しいコア データ エンティティを作成することはできます。NSEntityDescription クラスのドキュメントでは、次のことがわかります。

Entity descriptions are editable until they are used by an object graph manager. This
allows you to create or modify them dynamically. However, once a description is used 
(when the managed object model to which it belongs is associated with a persistent store
coordinator), it must not (indeed cannot) be changed. This is enforced at runtime: any
attempt to mutate a model or any of its sub-objects after the model is associated with a 
persistent store coordinator causes an exception to be thrown. If you need to modify a
model that is in use, create a copy, modify the copy, and then discard the objects with
the old model.

実行時に 1 つを変更しようとしたことがないため、既存の SQLite 永続ストアがある場合にこれがどの程度うまく機能するかは正確にはわかりません。しかし、おそらく NSEntityDescription をいじって、あなたがやろうとしていることに近づくかどうかを確認する価値があります。

于 2012-06-05T00:59:45.133 に答える
0

通常、管理対象オブジェクト モデルは、Xcode のデータ モデル設計ツールを使用してグラフィカルに作成します。(必要に応じて、実行時にプログラムでモデルを構築できます

コア データ プログラミング ガイド

于 2012-06-19T11:42:29.197 に答える
0

ただし、次のことができます。

  • オブジェクト モデル コンテキストを作成します (現在使用中のオブジェクト モデルの外部)。
  • 1 つ以上のエンティティを作成する
  • そのモデルの個別の永続ストアを作成します
  • エンティティなどを保存...
  • 終わったら閉店

モデルはランタイム環境に取り込まれるとほとんど修正されるため、その場でモデルを変更することはできません。

于 2013-09-21T14:28:23.693 に答える