1

Core Data を使用して XCode 4 で Window ベースの iPhone アプリケーションを作成しました。コア データ ビットに関して、いくつか質問があります。

  1. アプリケーション デリゲート ヘッダー ファイルには、3 つのコア データ プロパティがありません。インスタンス変数として表示されませんか? つまり、@interface セクションにリストされている変数はありませんが、それらのプロパティがあり、実装ファイルに合成されています。これは正しいです?

  2. デフォルトの永続化メカニズムでは SQLite? 「persistentStoreCoordinator」メソッドで、storeURL が「...URLByAppendingPathComponent:@"CoreDataProjectTemplate.sqlite" であることがわかります。

  3. 実際の sqlite 永続化ファイルはいつどこで作成されますか? テンプレートのコードでこれがどこにあるのかわかりませんか? これを作成するには、独自のコードを追加する必要がありますか?

4

3 に答える 3

2
  1. 最新の Objective-C ランタイムは、アクセサーだけでなく、プロパティのストレージも合成できます。必要に応じて、プロパティをサポートする ivar を自分で指定することも、ランタイムに判断させることもできます。

  2. SQLite は、iOS でサポートされている Core Data の唯一のバッキング ストアです。

  3. 私が間違っていなければ、管理対象オブジェクトのコンテキストが保存されるときにファイルが作成されます (まだ存在しない場合)。URL は、永続ストア コーディネーターに追加されると、永続ストアに関連付けられます。

于 2011-03-30T21:51:22.937 に答える
1

1私はあなたが以下を参照していると仮定します:

@synthesize managedObjectContext=__managedObjectContext;
@synthesize managedObjectModel=__managedObjectModel;
@synthesize persistentStoreCoordinator=__persistentStoreCoordinator;

この形式を使用すると、別の名前の変数のアクセサーを作成できます(つまり、ゲッター/セッターのアクセサー名は変数名とは異なる場合があります)。変数が以前に定義されていない場合、合成操作により、合成されたインスタンス変数が自動的に作成されます。

2ファイル名から推測できるように、CoreDataのデフォルトの永続ストアはSQLiteです。ただし、これはこの1つのタイプに限定されません。永続ストアを初めて作成するときは、永続ストアコーディネーターにメッセージを送信します。このメッセージで、addPersistentStoreWithTypeを次のいずれかに設定します。

NSSQLiteStoreType
NSBinaryStoreType
NSInMemoryStoreType

正直なところ、変更する正当な理由がない限り、SQLiteを使い続けるのがおそらく最善です。

3永続ストアのロケーションURLは、アプリケーションが実行されているディレクトリを確立し(applicationDocumentsDirectoryへのメッセージ-コードの他の場所に記述されています)、URLByAppendingPathComponentパラメーターを介して永続ストアのファイル名を追加することによって構築されます。必要に応じて、これを変更してサブフォルダーを追加したり、ファイル名を変更したりできます。

于 2011-03-30T22:09:48.190 に答える
1

3) その storeURL は、Core Data データベースの名前と場所です。他の場所に置きたい場合は、ベースディレクトリを変更してください。Application Support ディレクトリを検討することをお勧めします。

于 2011-03-30T21:57:54.947 に答える