Core data Coredata-使用配置管理瞬态实体
我尝试使用配置来管理核心数据中的临时实体Core data Coredata-使用配置管理瞬态实体,core-data,memory,sqlite,entities,transient,Core Data,Memory,Sqlite,Entities,Transient,我尝试使用配置来管理核心数据中的临时实体 首先,我创建了两个名为“持久”和“瞬态”的coredata配置 然后,我创建了实体,并将它们与正确的配置相关联 取决于实体是否可持久化 最后,使用persistentStoreCoordinator,我创建了一个Sqlite类型的持久存储,并将其链接到“持久”配置。我还创建了类型内存的持久存储,并将其链接到“瞬态”配置 测试:我启动iphone模拟器,我的应用程序成功启动。我关闭模拟器,然后 在数据库文件上启动sqlite3。我列出了表(.table
- 首先,我创建了两个名为“持久”和“瞬态”的coredata配置
- 然后,我创建了实体,并将它们与正确的配置相关联 取决于实体是否可持久化
- 最后,使用persistentStoreCoordinator,我创建了一个Sqlite类型的持久存储,并将其链接到“持久”配置。我还创建了类型内存的持久存储,并将其链接到“瞬态”配置
- (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;
}
我认为您正在混合CoreData的不同概念 CoreData不是ORM,而是管理对象及其关系的对象图 您可以在一个实体上拥有瞬态属性,该属性不会在表示该实体的表中形成列,仅在运行时生成,而对象在内存中
抽象实体绝不意味着要实例化,如果您有许多对象继承自一个超级对象,通常会使用抽象实体,即员工管理系统可能有一个抽象的个人实体,以及员工、经理、主管和经理,所有这些实体都继承自个人,如注释中所述,试图通过模型编辑器配置数据存储是行不通的。这些配置可能允许您添加预先确定的回迁,但不允许您配置数据存储的位置。这是使用这些方法的关键。您需要添加一些代码,如博文中所述,以正确使用这些技术。此网页介绍了处理瞬态实体的不同方法:但我尝试使用coredata中的配置来实现。您不能仅使用配置。他谈到的关于瞬态实体的概念是在代码中管理的,他在NSManagedObjectContext中创建NSManagedObjects,但从不保存它们。实现这一点还有其他几种方法,但都是在代码中完成的,配置文件中没有。我对其他方法感兴趣,如果你能多谈一点的话。对你来说,什么是最好的方式?