我知道 SO 中有一百万个这样的问题,但这是不同的,我很难过。
我有一个包含十几个实体的数据模型。代码运行得很好。然后我对模型进行版本化,添加实体和关系,然后更新 xdatamodeld 文件中当前版本化数据模型的设置,现在在尝试访问新实体时出现 NSInternalInconsistencyException。
在我的主 VC 中,我记录了上下文、持久存储协调器、托管对象模型和所有实体。一切看起来都如我所料,包括我试图访问的实体。
我已经将 SQLite DB 吹走,让 Core Data 重新创建它,并且可以看到具有正确列类型的表。
一切看起来都是正确的。
这是获取代码:
- (void)fetchMissions {
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Mission" inManagedObjectContext:self.managedObjectContext];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setEntity:entity];
[request setSortDescriptors:sortDescriptors];
NSError *error = nil;
missionsArray = [[self.managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
}
下面是输出:
NSLog(@"Entities : %@",[[self.managedObjectContext.persistentStoreCoordinator.managedObjectModel entities] valueForKey:@"name"]);
Entities : (
Character,
CharacterClass,
CharacterCondition,
CharacterObjective,
CharacterPerception,
Condition,
Mission,
Objective,
Perception,
PlayerCharacter,
Scoreboard
)
当我打印出整个托管对象模型时,我还看到了 Mission 实体的详细信息:
NSLog(@"MOM : %@", self.managedObjectContext.persistentStoreCoordinator.managedObjectModel);
该实体非常简单...... 3 列,两列是文本/字符串,一列是整数。模型编辑器中的实体描述与 SQLite 中的表定义相匹配。
我错过了什么??