構成を使用して、コア データの一時的なエンティティを管理しようとしています。
- まず、「Persistent」と「Transient」という名前の 2 つのコアデータ構成を作成しました。
- 次に、エンティティを作成し、エンティティが永続的かどうかに応じて、エンティティを適切な構成に関連付けました。
- 最後に、persistentStoreCoordinator を使用して、Sqlite タイプの永続ストアを 1 つ作成し、それを「永続」構成にリンクしました。タイプメモリの永続ストアも作成し、それを「一時」構成にリンクしました。
テスト: iphone シミュレーターを起動すると、アプリが正常に起動します。シミュレーターを閉じて、データベース ファイルで sqlite3 を開始します。テーブルを一覧表示 ( .tables コマンド) すると、一時的なエンティティ用にいくつかのテーブルが作成されていることがわかります => したがって、機能しません。
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
NSLog(@"++++++++ persistentStoreCoordinator");
if (_persistentStoreCoordinator != nil) {
return _persistentStoreCoordinator;
}
NSURL *persistStoreURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"ProjectToDelete.sqlite"];
NSMutableDictionary *sqliteOptions = [NSMutableDictionary dictionary];
[sqliteOptions setObject:@"WAL" forKey:@"journal_mode"];
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption,
sqliteOptions, NSSQLitePragmasOption,
nil];
NSError *error = nil;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:@"Persistent" URL:persistStoreURL options:options error:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSInMemoryStoreType configuration:@"Transient" URL:[NSURL URLWithString:@"memory://store"] options:nil error:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return _persistentStoreCoordinator;
}