我正在尝试使用配置来管理核心数据中的瞬态实体。
测试:我启动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;
}
答案 0 :(得分:0)
我认为你正在混合CoreData的不同概念。
CoreData不是ORM,而是管理对象及其关系的对象图。
您可以在实体上拥有瞬态属性,这些属性不会在表示该实体的表中生成,仅在运行时生成,而对象在内存中。
抽象实体永远不会被实例化,如果你有很多从一个超级项目继承的对象,通常会使用它们,即员工管理系统可能有一个抽象的Person-entity,以及所有继承自人员的员工,经理,董事和经理
答案 1 :(得分:0)
正如评论中所提到的,尝试通过模型编辑器配置数据存储不会起作用。配置可能允许您添加预定的提取,但它们不允许您配置存储数据的位置。这是使用任何这些方法的关键。您需要添加一些代码,如博客文章中所述,以正确使用这些技术中的任何一种。