これらのテンプレートにはコア データの設定が含まれていますが、必須ではありません。どのプロジェクトからでもコア データを使用できます。必要に応じて、空のアプリケーションからコードを取得して、プロジェクトで使用することができます。
生成されたコードを見ると、コア データ スタックの構築に使用される 3 つの主要コンポーネントの 3 つの「ゲッター」が表示されます。
managedObjectModel は、バンドルのモデル ファイルを使用してモデルを作成します。New-File で Xcode で簡単に作成し、Core Data Data Model を選択します。
persistStoreCoordinator はモデルと SQL ストアを使用します。
最後に、persistentStoreCoordinator を使用して managedObjectContext を作成します。必要に応じて、実際にそのスタックを 1 つのメソッドで構築できることに注意してください。これらの個々のアクセサーを持つ必要はありません...
あなたはこのようなことをすることができます...
- (NSManagedObjectContext*)setupCoreDataStack
{
// Load the model description
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"APPNAME" withExtension:@"momd"];
NSManagedObjectModel *model = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
// Prepare the persistent store coordinator - needs the model
NSURL *documentsDirectory = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
NSURL *storeURL = [applicationDocumentsDirectory URLByAppendingPathComponent:@"APPNAME.sqlite"];
NSError *error = nil;
NSPersistentStoreCoordinator *psc = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];
if (![psc addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error])
{
// Handle the error !!!!!
// exit the function
return nil;
}
// Create the managed object context. This is what you will really
// use in the rest of your program.
NSManagedObjectContext *moc = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
[moc setPersistentStoreCoordinator:psc];
return moc;
}
そして今、あなたは他の人とほぼ同じスタックを持っています. 唯一の実際の違いは、ここでの MOC がメイン キューの同時実行タイプを使用していることです。これは、はるかに優れた代替手段です。
より優れたパフォーマンス モデルが必要な場合は、親モックを挿入します。
実際、現在のコア データ戦略に慣れていない場合は、UIManagedDocument をお勧めします。